[英]Using virtualenvwrapper and pyenv together
$ pyenv virtualenv 3.8.0 tf12
創建一個位於~/.pyenv/versions/3.8.0/envs/tf12
的 virtualenv,其中包含我們使用pip install
安裝到其中的軟件包。 如果我們創建一個像mkdir myfolder && cd myfolder && pyenv local tf12
這樣的新項目目錄,該項目目錄將使用 tf12 環境包含的相同內核和包,因為我們使用了pyenv local
命令。
但是我們也有使用mkproject mynewenv
創建的 virtualenvs 和目錄,它們位於~/.ve
和~/workspace
之類的地方。 工作區是我們放置筆記本、代碼和腳本.pynb
、 .py
、 .r
等的地方,相應的 virtualenv 使用在執行mkproject mynewenv
時處於活動狀態的全局 python 版本。
這些使用 mkproject mynewenv 創建的 virtualenvs 與使用mkproject mynewenv
pyenv virtualenv
創建的 virtualenvs 是分開的。
我得出的結論是,我們不能將它們一起用於進一步的可能性。 它們是獨立使用的。 如我錯了請糾正我。
您應該安裝pyenv-virtualenvwrapper 插件並進行設置。 之后,您可以設置 python 版本,然后創建一個虛擬環境。
pyenv local 3.8.0
mkvirtualenv test-venv
如果需要,您可以創建 shell function 將這兩行壓縮為一行。
如果您不想使用pyenv local
命令來避免創建.python-version
文件,則可以使用pyenv shell <python-version>
命令。
# .bash_profile or .zshrc after pyenv and virtualenvwrapper init.
mkvenv()
{
pyenv shell $1
mkvirtualenv $2 ${@:3}
}
請記住,使用mkvirtualenv test-venv -p python<version>
不會選擇 pyenv 安裝的 python 版本。
另一種方法:如果您只想使用 mkvirtualenv 創建一個 venv,您可以使用 shell function 來替換它的行為。
# .bash_profile or .zshrc after virtualenvwrapper init.
pyvenv()
{
python$1 -m venv $WORKON_HOME/$2
workon $2
}
要創建 virtualenv,請使用pyvenv <python-version> <venv-name>
。 您可以將所有 virtualenvwrapper 命令與新創建的 venv 一起使用。
請記住,pyenv-venv 和 virtualenvwrapper 只是 stdlib venv package 的包裝器。 他們只是調用為您創建一個 venv: python -m venv venv_dir
並激活 venv source./venv_dir/bin/activate
。 他們也可能在您的 $PATH 上 append 某些東西,以確保使用正確的 python 二進制文件。 見pyenv 墊片
話雖如此,這兩個工具創建的 virtualenvs 本質上是相同的(加上一些配置文件)。
從理論上講,將 virtualenv 目錄從$WORKON_HOME
復制到.pyenv
並手動編寫配置並沒有錯,但我不明白為什么有人想要這樣做。
如果想將 virtualenvwrapper 創建的 venv 傳輸到 pyenv,那么您可以使用pip freeze
和pip install -r requirements.txt
在 pyenv venv 中導出已安裝的軟件包。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.