终极利器|一篇文章讲清楚Python虚拟环境
文章來源于濤哥聊Python,作者sitin
我在之前寫過一篇「Python新手常見的幾個問題及工具推薦」說過新手往往沒有注意環境隔離,導致Python項目包與包之間沖突。
并且Python2與3代碼執行有問題等等。鑒于此我今天給大家聊聊關于Python環境隔離問題以及如何進行隔離。
Virtualenv
我們都知道Python開發項目很容易,項目也經得起工業級別考驗。很多開發者都會習慣用Python開發項目,但是由于我們每個項目情況都有些不一樣。比如 今天可能用的是Django 1.8,明天可能用的是Django 2.1。
如果不進行環境隔離全局安裝就會導致包的沖突,依賴不同,出現問題。
這個時候每個應用都需要一套「獨立」的Python運行環境。而Virtualenv就是拿來為應用創建這一套「隔離」的Python運行環境。
首先用pip安裝
pip install virtualenv
創建虛擬環境
sitin@test:/data/opt/test$?virtualenv?venv sitin@test:/data/opt/test$?source?venv/bin/activate? (venv)?sitin@test:/data/opt/test$?deactivate sitin@test:/data/opt/test$Virtualenvwrapper
上面如果我們配置了vitualenvwrapper會更加方便切換進入虛擬環境,做到一鍵切換進入虛擬環境。不用每次都去到指定項目目錄里面進行 source venv/bin/activate。
安裝如下:
pip install virtualenvwrapper
mkdir ~/.virtualenvs
安裝好了,你可以在你的.bashrc或者.zshrc配置virtualenvwrapper,配置如下。
export?WORKON_HOME=$HOME/.virtualenvs??#?指定目錄 export?VIRTUALENVWRAPPER_PYTHON=/usr/bin/python export?VIRTUALENVWRAPPER_VIRTUALENV_ARGS='--no-site-packages'?#?隔離系統site-packages? export?PIP_VIRTUALENV_BASE=$WORKON_HOME export?PIP_RESPECT_VIRTUALENV=true if?[[?-r?/usr/local/bin/virtualenvwrapper.sh?]];?thensource?/usr/local/bin/virtualenvwrapper.sh elseecho?"WARNING:?Can't?find?virtualenvwrapper.sh" fi配置好我們可以創建我們虛擬環境方式如下:
mkvirtualenv your_project #創建
rmvitualenv your_project #刪除
workon ?# 列出項目
workon your_project # 進去某個項目
通過上面這種方式,讓我們更加方便切換進入虛擬環境了。
Pyenv
說了vitualenv,vitualenvwrapper,進行Python 包的環境隔離,我們接下來聊聊我們終極利器pyenv -- Python版本的隔離。
我們都知道python存在2,3問題,我們經常需要維護老版本Python2項目,也要考慮新版本Python3的遷移。
說它是終極利器是它除了python版本問題,也可以結合virtualenv,vitualenvwrapper一起使用。
目前pyenv這個庫在github上面有14K+的star,可見受到到了非常多的關注。
這里面我們直接進入Mac的安裝環節:
brew install pyenv
brew install pyenv-virtualenv
brew install pyenv-virtualenvwrapper
把下面的配置加入到我們的shell環境中,比如我的就是.zshrc。
#?---pyenv--- export?PATH="$HOME/.pyenv/bin:$PATH" eval?"$(pyenv?init?-)" eval?"$(pyenv?virtualenv-init?-)"配置好之后,我們可以看到pyenv的shell補全,如下圖。
pyenv的具體使用方式:
pyenv?install?-l?#?獲取安裝列表 pyenv?install?3.7.1?#?安裝python3.7 pyenv?global?3.7.1?#?設置全局python pyenv?virtualenv?test-pyenv-venv?#?創建虛擬包 pyenv?activate?test-pyenv-venv?#?進入虛擬環境 pyenv?deactivate??#?退出 ...這里面我就不過多演示使用了,看一個官方的配圖。
Tox
上面我們提到了關于使用pyenv進行python2,3的版本隔離情況,實際過程中想要寫出兼容Python2,3的代碼,那么我們不得不提一下這個測試工具--tox。
tox提供了非常方便的方式來運行我們的不同環境下的測試,非常方便我們在寫測試的時候,同時對Python2,Python3的環境進行測試,這里面強烈推薦大家使用。
最后關于虛擬環境實際Python3 官方有原生venv支持虛擬環境代替vitualenv目前接受度還較低,大家感興趣可以去了解下。我們虛擬環境就暫時聊到這兒,歡迎你給我留言,談談你的一些看法或思考。
備注:公眾號菜單包含了整理了一本AI小抄,非常適合在通勤路上用學習。
往期精彩回顧2019年公眾號文章精選適合初學者入門人工智能的路線及資料下載機器學習在線手冊深度學習在線手冊AI基礎下載(第一部分)備注:加入本站微信群或者qq群,請回復“加群”加入知識星球(4500+用戶,ID:92416895),請回復“知識星球”喜歡文章,點個在看
總結
以上是生活随笔為你收集整理的终极利器|一篇文章讲清楚Python虚拟环境的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 90题细品吴恩达《机器学习》,感受被刷题
- 下一篇: Python中enumerate函数的解