python版本管理(python環境隔離)
這將是一篇比較短的文章。
我發文向來注重文章質量,營養不夠的寧可不發,但是我相信很多人需要這篇文章。
之所以要去搞清楚這個問題,是我在把 vscode 的 inspector 設定為 pipenv 生成的虛擬環境是遇到了問題。2018-2月 vscode 新增了對 pipenv 的支援,檢測到 Pipfile 以後,會將環境自動切換到當前專案的虛擬環境。但是我的咋就不行呢!我就開始折騰。這是一個比較漫長相信你們都不想經歷的過程。希望你們搜到的第一篇文章就是這篇。相關關鍵字如下: vscode 對 pipenv 的支援, vscode 找不到 pipenv 建立的虛擬環境, vscode pipenv, pipenv vscode ...等等
希望能給你帶來更多營養,我多說點
不知不覺,上面的內容可能要佔本文一半以上了。。。
pyenv 和 pipenv 應該是目前主流的 python 版本控制和虛擬環境的工具了,下面內容都基於這兩個。
從 PATH 開始。當你要執行終端命令的時候,這個命令是從哪來呢,有個環境變數 PATH 企圖hold住這個問題,大部分人列印一下 PATH (echo $PATH) 應該都會發現這樣一部分 /usr/local/bin:/usr/bin:/bin 。執行命令時查詢循序由左到右,/usr/local/bin 裡沒找到去 /usr/bin 裡找,還沒有去 /bin 裡看看。
基於此 pyenv 做了些什麼呢?他加了個 (pyenv root)/shims 墊片到最左面(具體到 Mac 大多是 /Users/admin/.pyenv/shims 這麼個東西)。這就很巧妙了,加了這個,python 啊 pip 啊這些命令都被這個墊片攔截住了,具體用那個版本那個環境全取決於 shims 裡面 python 的心情,它指哪就打哪。這就說明了一個問題,只要你使用pyenv 執行 which python 的時候永遠都列印 /Users/admin/.pyenv/shims/python 即使它指向的是各種各樣的 python 版本!(which pip 同理)
pyenv 透過環境變數 PYENV_VERSION 控制 python 指向的版本,也就是 pyenv shell 控制的內容,控制順序依次是 pyenv shell, pyenv local, pyenv global。前面的覆蓋後面的。比如 PYENV_VERSION = 2.5 使用的就是這個 python: $(pyenv root)/versions/2.5/bin/python2.5。
這就是為啥要在 ~/.zshrc (或者 bash 對應的配置檔案)裡面加上 eval "$(pyenv init -),因為要把墊片加到 PATH 的最前面。啟用 pyenv 後再列印 PATH 那一大坨你都不想看。
說了這麼多還沒扯到問題關鍵呢,怎麼搞。vscode 作者之一在git issues 回答了這個問題,用 pyenv 的時候,是無法自動找到 pipenv 建立的虛擬環境的。這就得繞道了,第一種,可以直接在 vscode 的配置里加上虛擬環境的路徑。類似於 "python.pythonPath": "/Users/admin/.local/share/virtualenvs/......" 這種。該路徑可以透過
pipenv --py
獲取。推薦這種方式,雖然顯得有點麻煩。第二種,遮蔽掉 pyenv 把 ~/.zshrc 裡面的 eval "$(pyenv init -) 去掉,這樣就會用系統的或者 brew 安裝的 python, 在這個裡面安裝 pipenv 之後 vscode 檢測到 Pipfile 就會自動找到虛擬環境並切換了。
說了這麼多,希望能給你帶來多於答案本身的價值。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/430/viewspace-2817829/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 使用虛擬環境virtualenv/Virtualenvwrapper隔離多個pythonAPPPython
- 離線部署Python環境Python
- PyCharm 使用 Anaconda 管理多版本 Python 環境PyCharmPython
- virtualenv管理Python環境Python
- 建立和管理Python的虛擬環境,從而實現隔離專案依賴和簡化專案管理。Python專案管理
- MacOS 下利用 pyenv 管理Python 版本和虛擬環境MacPython
- conda管理python環境Python
- Eureka 多環境隔離方案(包含本地開發人員間隔離)
- python多版本與虛擬環境Python
- Windows多版本Python環境下修改預設Python和IPython版本WindowsPython
- Python 版本及虛擬環境管理Python
- 使用pyenv和venv管理python環境Python
- conda linux 管理python 環境LinuxPython
- anaconda建立虛擬環境指定python版本Python
- Python環境Python
- 已完成的python專案-環境離線部署Python
- 【Linux】python版本控制和環境管理LinuxPython
- Python虛擬環境的建立和管理Python
- 使用ansible搭建python多版本開發環境Python開發環境
- Mac環境下WingIDE切換python版本MacIDEPython
- virtualenvwrapper 建立虛擬環境(指定版本的python)APPPython
- 使用 pyenv + virtualenv 打造多版本 Python 開發環境Python開發環境
- 附001.Python多版本環境管理Python
- python環境搭建Python
- 配置python環境Python
- Windows 環境下 Python 環境安裝WindowsPython
- python教程(一)·python環境搭建Python
- python多版本管理Python
- 【Python 筆記】在Windows下使用virtualenv管理python虛擬環境Python筆記Windows
- Python虛擬環境Python
- python pipenv建立環境Python
- CentOS python環境配置CentOSPython
- python開發環境Python開發環境
- emacs 配置 python環境MacPython
- Python新建Poetry 環境Python
- Python3 系列之 環境包管理神器 pipenvPython
- 【Python】virtualenv搭建python開發環境Python開發環境
- 02、Python 系列之 Python 環境搭建Python