簡體   English   中英

一起使用 virtualenvwrapper 和 pyenv

[英]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 freezepip install -r requirements.txt在 pyenv venv 中導出已安裝的軟件包。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM