python下多版本與環(huán)境隔離

需求

在使用python的過(guò)程中我們經(jīng)常需要部署python的不同版本. 然后使用不同的安裝包. 并且希望他們之間互相不會(huì)影響.

如果我們通過(guò)pyenv versions命令只能看到系統(tǒng)的. 找不到已經(jīng)安裝的一些python版本. 在確保~/.bash_profile這個(gè)文件經(jīng)過(guò)配置之后
.通過(guò)調(diào)用source ~/.bash_profile命令就可以通過(guò)pyenv versions看到當(dāng)前的python有哪些版本

Last login: Mon Jan 14 13:45:52 on ttys000
xxzxdeMacBook-Pro:~ xxzx$ pyenv versions
* system (set by /usr/local/var/pyenv/version)
  2.7.14
  2.7.14/envs/my-virtual-env-2.7.14
  2.7.7
  3.5.5
  3.6.4
  3.6.5
  my-virtual-env-2.7.14
xxzxdeMacBook-Pro:~ xxzx$ cd ~/Desktop/python/python3.6.5/
xxzxdeMacBook-Pro:python3.6.5 xxzx$ pyenv virtualenv 3.6.5 my-virtual-env-3.6.5
Using base prefix '/usr/local/var/pyenv/versions/3.6.5'
New python executable in /usr/local/var/pyenv/versions/3.6.5/envs/my-virtual-env-3.6.5/bin/python3.6
Also creating executable in /usr/local/var/pyenv/versions/3.6.5/envs/my-virtual-env-3.6.5/bin/python
Installing setuptools, pip, wheel...
done.
Requirement already satisfied: setuptools in /usr/local/var/pyenv/versions/3.6.5/envs/my-virtual-env-3.6.5/lib/python3.6/site-packages
Requirement already satisfied: pip in /usr/local/var/pyenv/versions/3.6.5/envs/my-virtual-env-3.6.5/lib/python3.6/site-packages
xxzxdeMacBook-Pro:python3.6.5 xxzx$ pip list
Package                                Version 
-------------------------------------- --------
altgraph                               0.10.2  
bdist-mpkg                             0.5.0   
bonjour-py                             0.3     
macholib                               1.5.1   
matplotlib                             1.3.1   
modulegraph                            0.10.4  
numpy                                  1.8.0rc1
pbr                                    5.1.1   
pip                                    18.1    
py2app                                 0.7.3   
pyobjc-core                            2.5.1   
pyobjc-framework-Accounts              2.5.1   
pyobjc-framework-AddressBook           2.5.1   
pyobjc-framework-AppleScriptKit        2.5.1   
pyobjc-framework-AppleScriptObjC       2.5.1   
pyobjc-framework-Automator             2.5.1   
pyobjc-framework-CFNetwork             2.5.1   
pyobjc-framework-Cocoa                 2.5.1   
pyobjc-framework-Collaboration         2.5.1   
pyobjc-framework-CoreData              2.5.1   
pyobjc-framework-CoreLocation          2.5.1   
pyobjc-framework-CoreText              2.5.1   
pyobjc-framework-DictionaryServices    2.5.1   
pyobjc-framework-EventKit              2.5.1   
pyobjc-framework-ExceptionHandling     2.5.1   
pyobjc-framework-FSEvents              2.5.1   
pyobjc-framework-InputMethodKit        2.5.1   
pyobjc-framework-InstallerPlugins      2.5.1   
pyobjc-framework-InstantMessage        2.5.1   
pyobjc-framework-LatentSemanticMapping 2.5.1   
pyobjc-framework-LaunchServices        2.5.1   
pyobjc-framework-Message               2.5.1   
pyobjc-framework-OpenDirectory         2.5.1   
pyobjc-framework-PreferencePanes       2.5.1   
pyobjc-framework-PubSub                2.5.1   
pyobjc-framework-QTKit                 2.5.1   
pyobjc-framework-Quartz                2.5.1   
pyobjc-framework-ScreenSaver           2.5.1   
pyobjc-framework-ScriptingBridge       2.5.1   
pyobjc-framework-SearchKit             2.5.1   
pyobjc-framework-ServiceManagement     2.5.1   
pyobjc-framework-Social                2.5.1   
pyobjc-framework-SyncServices          2.5.1   
pyobjc-framework-SystemConfiguration   2.5.1   
pyobjc-framework-WebKit                2.5.1   
pyOpenSSL                              0.13.1  
pyparsing                              2.0.1   
python-dateutil                        1.5     
pytz                                   2013.7  
scipy                                  0.13.0b1
setuptools                             18.5    
six                                    1.12.0  
stevedore                              1.30.0  
virtualenv                             16.2.0  
virtualenv-clone                       0.4.0   
virtualenvwrapper                      4.8.2   
xattr                                  0.6.4   
xxzxdeMacBook-Pro:python3.6.5 xxzx$ pyenv activate my-virtual-env-3.6.5 
pyenv-virtualenv: prompt changing will be removed from future release. configure `export PYENV_VIRTUALENV_DISABLE_PROMPT=1' to simulate the behavior.
(my-virtual-env-3.6.5) xxzxdeMacBook-Pro:python3.6.5 xxzx$ pip list
Package    Version
---------- -------
pip        18.1   
setuptools 40.5.0 
wheel      0.32.3 
(my-virtual-env-3.6.5) xxzxdeMacBook-Pro:python3.6.5 xxzx$ pip install Flask
Collecting Flask
  Downloading https://files.pythonhosted.org/packages/7f/e7/08578774ed4536d3242b14dacb4696386634607af824ea997202cd0edb4b/Flask-1.0.2-py2.py3-none-any.whl (91kB)
    100% |████████████████████████████████| 92kB 10.0kB/s 
Collecting Werkzeug>=0.14 (from Flask)
  Using cached https://files.pythonhosted.org/packages/20/c4/12e3e56473e52375aa29c4764e70d1b8f3efa6682bef8d0aae04fe335243/Werkzeug-0.14.1-py2.py3-none-any.whl
Collecting Jinja2>=2.10 (from Flask)
  Using cached https://files.pythonhosted.org/packages/7f/ff/ae64bacdfc95f27a016a7bed8e8686763ba4d277a78ca76f32659220a731/Jinja2-2.10-py2.py3-none-any.whl
Collecting itsdangerous>=0.24 (from Flask)
  Using cached https://files.pythonhosted.org/packages/76/ae/44b03b253d6fade317f32c24d100b3b35c2239807046a4c953c7b89fa49e/itsdangerous-1.1.0-py2.py3-none-any.whl
Collecting click>=5.1 (from Flask)
  Downloading https://files.pythonhosted.org/packages/fa/37/45185cb5abbc30d7257104c434fe0b07e5a195a6847506c074527aa599ec/Click-7.0-py2.py3-none-any.whl (81kB)
    100% |████████████████████████████████| 81kB 16kB/s 
Collecting MarkupSafe>=0.23 (from Jinja2>=2.10->Flask)
  Using cached https://files.pythonhosted.org/packages/da/fc/2979c425ad23d528d6ac2e1f3efdc28e572fa1e1fbd5a75171cbdd7ddaa5/MarkupSafe-1.1.0-cp36-cp36m-macosx_10_6_intel.whl
Installing collected packages: Werkzeug, MarkupSafe, Jinja2, itsdangerous, click, Flask
Successfully installed Flask-1.0.2 Jinja2-2.10 MarkupSafe-1.1.0 Werkzeug-0.14.1 click-7.0 itsdangerous-1.1.0
(my-virtual-env-3.6.5) xxzxdeMacBook-Pro:python3.6.5 xxzx$ pip list
Package      Version
------------ -------
Click        7.0    
Flask        1.0.2  
itsdangerous 1.1.0  
Jinja2       2.10   
MarkupSafe   1.1.0  
pip          18.1   
setuptools   40.5.0 
Werkzeug     0.14.1 
wheel        0.32.3 
(my-virtual-env-3.6.5) xxzxdeMacBook-Pro:python3.6.5 xxzx$ 

步驟

接下來(lái)我們說(shuō)下步驟, 這里就不說(shuō)pyenv與pyenv-virtualenv的安裝和使用了.

結(jié)合上面的終端步驟來(lái)看:

  • 在合適的位置新建一個(gè)文件夾.比如我新建了一個(gè)文件夾python3.6.5. 因?yàn)槲覝?zhǔn)備在在當(dāng)前的文件夾下使用python3.6.5的python環(huán)境
  • 來(lái)到終端通過(guò)pyenv versions查看當(dāng)前pyenv安裝了哪些版本的python包
  • cd ~/Desktop/python/python3.6.5/進(jìn)入到這個(gè)文件夾中
  • 通過(guò)pyenv virtualenv 3.6.5 my-virtual-env-3.6.5命令來(lái)創(chuàng)建一個(gè)基于python3.6.5的虛擬環(huán)境,命名為my-virtual-env-3.6.5
  • 在??的命令之后會(huì)出現(xiàn)下面的. 我們記住當(dāng)前安裝的目錄
Using base prefix '/usr/local/var/pyenv/versions/3.6.5'
New python executable in /usr/local/var/pyenv/versions/3.6.5/envs/my-virtual-env-3.6.5/bin/python3.6
Also creating executable in /usr/local/var/pyenv/versions/3.6.5/envs/my-virtual-env-3.6.5/bin/python
Installing setuptools, pip, wheel...
  • 在這之后我通過(guò)pip list, 查看的是global下的包
  • pyenv activate my-virtual-env-3.6.5命令激活我們的虛擬環(huán)境, 使用pip list再次查看, 默認(rèn)為我們安裝的情況如下
(my-virtual-env-3.6.5) xxzxdeMacBook-Pro:python3.6.5 xxzx$ pip list
Package    Version
---------- -------
pip        18.1   
setuptools 40.5.0 
wheel      0.32.3 
  • 這時(shí)候我們安裝一個(gè)新的 python包
(my-virtual-env-3.6.5) xxzxdeMacBook-Pro:python3.6.5 xxzx$ pip install Flask

至此, 在終端中的過(guò)程就結(jié)束了

pycharm中使用

正常情況下我們是在pycharm中寫(xiě)我們的代碼. 也需要pycharm能夠正確的找到我們想要的虛擬環(huán)境

通過(guò)pycharm open打開(kāi)python3.6.5文件夾

image.png

打開(kāi)之后我們可以看到當(dāng)前的界面

image.png

這里的環(huán)境是錯(cuò)誤的, 我們需要通過(guò)如下的配置

image.png

通過(guò)add添加

image.png

]

還記得上面終端里的通過(guò)命令安裝之后顯示的Also creating executable in...之后的虛擬環(huán)境的安裝地址么

image.png

之后退出重新打開(kāi)當(dāng)前的項(xiàng)目目錄

image.png
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • title: python高級(jí)進(jìn)階 參考文獻(xiàn) https://pythonguidecn.readthedocs....
    采香行處蹙連錢(qián)閱讀 2,708評(píng)論 1 5
  • 發(fā)燒38.5度,舌苔白膩,兩個(gè)小臉蛋燒的紅紅的。 當(dāng)天下午五點(diǎn)多來(lái)看,開(kāi)了一付藥,當(dāng)天晚上開(kāi)始服藥,一直到第二天下...
    中醫(yī)李奇飛閱讀 552評(píng)論 0 0
  • 2017年7月23日 晴 山路彎彎 如何轉(zhuǎn) 我的腿還是太短 跑不出這小世界 無(wú)預(yù)兆的牽連 一走了之 勝似秋葉的難 ...
    鮮栗子閱讀 172評(píng)論 1 2
  • 【母女關(guān)系也許是所有關(guān)系中最能夠發(fā)展為親密關(guān)系的一種,當(dāng)然也最可能發(fā)展為失望和憤怒】 女兒通過(guò)觀察母親,預(yù)想自己的...
    魏井晶閱讀 313評(píng)論 0 0
  • “真正重要的準(zhǔn)備,都是在機(jī)會(huì)到來(lái)之前完成的。所以如果你現(xiàn)在還沒(méi)有發(fā)現(xiàn)大的機(jī)會(huì),比起惋惜更應(yīng)該感到慶幸,因?yàn)槟?..
    耐心長(zhǎng)閱讀 208評(píng)論 0 0

友情鏈接更多精彩內(nèi)容