[英]How to work with pyenv, virtualenv and pipenv?
我正在尋找類似於/等於RVM的 Python版本管理器(對於Ruby),我發現pyenv但它只是一個切換器,所以我需要將它與virtualenv (我的理解到目前為止)結合起來,有點費力但我可以習慣它。 此外我讀過pipenv建議使用而不是virtualenv ,所以它可以與pyenv一起使用嗎? 怎么樣?
然而文章
venv,pyvenv,pyenv,virtualenv,virtualenvwrapper,pipenv等有什么區別?
提到
pyenv在Python 3.6中已棄用。
所以我又零而又困惑,我該怎么用?
我應該如何使用它?
系統:Arch Linux,Plasma。
Python的當前(已安裝)版本:2.7.14和3.6.4
我打算做什么:我需要一個框架,如果由於任何原因我需要使用版本:3.4.7,3.2.6,2.6.7和2.3.3,我可以毫不費力地做到這一點。
我希望你的幫助,謝謝大家。
你有兩個選擇
例如,您想要創建一個新的項目測試,並且還想為它創建一個虛擬環境。
下次,您訪問項目目錄,它將自動更改為測試環境
首先,將此腳本添加到env配置(bashrc或zshenv等)
export PIPENV_VENV_IN_PROJECT=1
PROMPT_COMMAND='prompt'
precmd() { eval "$PROMPT_COMMAND" }
function prompt()
{
if [ ! $PIPENV_ACTIVE ]; then
if [ `pipenv --venv 2>/dev/null` ]; then
export PIPENV_INITPWD="$PWD"
pipenv shell
fi
elif [ $PIPENV_INITPWD ] ; then
cd "$PIPENV_INITPWD"
unset PIPENV_INITPWD
fi
}
然后
下次訪問目錄時,它將更改為正確的通風口(注意:在訪問項目目錄之前應使用pyenv shell 3.6.5)
如果我沒記錯的話,virtualenv更多的是確保你的應用程序不會干擾同一個運行系統上的其他應用程序。 如果您正在運行基於UNIX的操作系統(Linux / FreeBSD / macOS),您可以編譯python(使用configure --prefix = / opt / python /)並在.bashrc或bash_profile中為二進制可執行文件添加別名。
alias python363='/opt/python363/bin/python3'
或者如果你想使它成為系統范圍並且可以訪問root,你可以創建一個符號鏈接ln -s /opt/python363/bin/python3 /usr/bin/python363
(例如版本3.6.3)。
然后用python363 /path/to/your/script.py執行該文件
有沒有更好的方法呢? 可能,但它是你的困境的一種替代方案,盡管不是最優雅的。
即在.bashrc或bash_profile中
alias pip363='/opt/python363/bin/pip3'
或者作為符號鏈接的root用戶
ln -s /opt/python363/bin/pip3 /usr/bin/pip363
pyenv支持virtualenvs
只需安裝所需的python版本,例如:
pyenv install 3.6.4
pyenv install 3.6.0
使用參數global
選擇所需的python版本
pyenv global 3.6.4
然后創建一個virtualenv(我將其命名為myve)
pyenv virtualenv myve
並通過激活激活它
pyenv activate myve
與您手動創建的典型virtualenv的唯一區別是位置,並且您將擁有它的名稱,但最后,它非常舒適,類似於virtualenvwrapper的工作方式。
檢查激活了哪個virtualenv或版本
pyenv versions
停用
pyenv deactivate
使用uninstall
刪除virtualenv或python版本
pyenv uninstall myve
最近的老路
使用Pyenv,你要做的第一件事是安裝virtualenv
插件。 使命名和使用虛擬環境成為一種魅力。
*
新的方式
仍然使用Pyenv來維護幕后的python版本。 使用pipenv作為包管理+虛擬環境工具。 唯一的技巧是在使用它的墊片更新PYENV_ROOT后,將export PIPENV_PYTHON="$PYENV_ROOT/shims/python"
到.rc文件(.bashrc或 .zshrc ) 。 pyenv which python
以后會出錯,但pipenv不會。 我在博客文章中詳細介紹了,無恥地提到了一個插件。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.