您好,登錄后才能下訂單哦!
Python多環境管理工具,這兩款可能都不錯: Pyenv 和 Virtualenv 。
Pyenv ,是對Python的版本進行管理,實現版本的切換。
Virtualenv ,是通過創建虛擬環境,實現Python環境間的隔離,避免相互干擾。
現在可以用python自帶的venv模塊,和Virtualenv似乎是一樣的。不需要安裝,直接就能通過python模塊調用了。
現在已經不需要安裝了,直接使用python的venv模塊,直接就能創建虛擬環境目錄。這段跳過。
首先得先準備好Python和pip。Windows系統去官網下載安裝后就都有了。
CentOS7安裝python3可以看這篇:https://blog.51cto.com/steed/2288045
用pip安裝Virtualenv
pip install virtualenv
安裝過程:
$ pip install virtualenv
Collecting virtualenv
Downloading https://files.pythonhosted.org/packages/b6/30/96a02b2287098b23b875bc8c2f58071c35d2efe84f747b64d523721dc2b5/virtualenv-16.0.0-py2.py3-none-any.whl (1.9MB)
100% |████████████████████████████████| 1.9MB 59kB/s
Installing collected packages: virtualenv
Successfully installed virtualenv-16.0.0
$
如果是使用python的venv模塊,這段跳過。
這段可以跳過,看下面的小節,直接干
命令使用格式如下:
virtualenv [選項] 目標目錄
最基本的用法,創建虛擬目錄就是這樣:
virtualenv /opt/ansible/venv
上面的命令將會創建指定的文件夾,包含了Python可執行文件,以及 pip 庫的一份拷貝。如果你的本地 pip 庫已經裝了別的模塊了,那么新的虛擬環境也會包含這些模塊。如果不想這樣,就要加上一些參數選項。
下面列出了一些可用的選項:
用下面的命令,可以選擇指定的Python解釋器創建虛擬環境:
$ virtualenv -p /usr/bin/python2.7 venv
如果有多個Python解釋器,比如在CentOS7上安裝python3.6。默認的Python解釋器不是要使用的,就要用 -p 參數設置一下了。
默認使用的解釋器,可能是根據 pip 來決定的。我試的時候,CentOS默認有python2.7,我又安裝了python3.6。使用python命令啟動的是python2.7。但是python2.7沒有安裝 pip , pip 是安裝在 python3.6 下的。啟動 pip 用的是python3.6,如下:
$ pip -V
pip 18.1 from /usr/local/lib/python3.6/site-packages/pip-18.1-py3.6.egg/pip (python 3.6)
我實際安裝虛擬環境的時候,沒有用 -p 指定解釋器,默認用的也是 python3.6 。
使用python的venv模塊,直接調用模塊創建虛擬環境。放在在后面,這段跳過。
創建工作目錄:
$ mkdir /opt/ansible
在工作目錄下,創建一個獨立的虛擬環境,命名為venv:
$ cd /opt/ansible
$ virtualenv --no-site-packages venv
Using base prefix '/usr'
New python executable in /opt/ansible/venv/bin/python3.6
Also creating executable in /opt/ansible/venv/bin/python
Installing setuptools, pip, wheel...done.
$
命令virtualenv就可以創建一個獨立的Python運行環境,我們還加上了參數--no-site-packages,這樣,已經安裝到系統Python環境中的所有第三方包都不會復制過來,這樣,我們就得到了一個不帶任何第三方包的“干凈”的Python運行環境。
python的venv模塊和這個似乎是一樣的,用法也是一樣的。所以使用的操作可以參考。
使用source命令可以進入指定的虛擬環境,命令后面要跟虛擬環境目錄下的 bin/activate 文件:
$ source /opt/ansible/venv/bin/activate
(venv) $
退出虛擬環境用Deactivate命令:
(venv) $ deactivate
$
這里都注意一下切換虛擬環境前后命令提示符的變化
Windows平臺
如果是Windows平臺,則分別執行這2個bat文件:
> activate.bat
> deactivate.bat
下面切換到虛擬環境下,安裝個模塊試下:
$ source /opt/ansible/venv/bin/activate
(venv) $ pip install ansible
""" 中間的安裝日志就省略了 """
Successfully built ansible PyYAML MarkupSafe pycparser
Installing collected packages: MarkupSafe, jinja2, PyYAML, pycparser, cffi, six, pynacl, asn1crypto, idna, cryptography, bcrypt, pyasn1, paramiko, ansible
Successfully installed MarkupSafe-1.0 PyYAML-3.13 ansible-2.7.0 asn1crypto-0.24.0 bcrypt-3.1.4 cffi-1.11.5 cryptography-2.3.1 idna-2.7 jinja2-2.10 paramiko-2.4.2 pyasn1-0.4.4 pycparser-2.19 pynacl-1.3.0 six-1.11.0
(venv) $ ansible --version
ansible 2.7.0
config file = None
configured module search path = ['/root/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']
ansible python module location = /opt/ansible/venv/lib/python3.6/site-packages/ansible
executable location = /opt/ansible/venv/bin/ansible
python version = 3.6.6 (default, Aug 13 2018, 18:24:23) [GCC 4.8.5 20150623 (Red Hat 4.8.5-28)]
(venv) $ deactivate
$ ansible --version
-bash: ansible: 未找到命令
$ /opt/ansible/venv/bin/ansible --version
ansible 2.7.0
config file = None
configured module search path = ['/root/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']
ansible python module location = /opt/ansible/venv/lib/python3.6/site-packages/ansible
executable location = /opt/ansible/venv/bin/ansible
python version = 3.6.6 (default, Aug 13 2018, 18:24:23) [GCC 4.8.5 20150623 (Red Hat 4.8.5-28)]
$
切換到虛擬環境下安裝,安裝完之后,可以使用安裝的模塊。
然后退出虛擬環境,再次嘗試使用之前的模塊,就提示找不到命令了。
其實只是系統的環境變量變了,安裝的模塊還在,但是不在環境變量里,所以就找不到了,指定路徑的話還是有的
venv不用安裝,不過需要python3.3以上。進入和退出該環境的方式和virtualenv一致。
看著似乎是同一個東西,python3.3版本之后,自帶了這個模塊,就不需要安裝了。
在當前目錄下創建新的虛擬環境的命令:
> python -m venv <NAME>
我在 windows 平臺的習慣的做法:
更新pip
在vevn目錄下的虛擬環境目錄下的Scripts目錄里,打開cmd。直接在最上面的路徑框內輸入cmd。
打開cmd后,執行如下2條語句的任意一條,就能完成pip的更新:
> easy_install-3.6.exe -U -i https://pypi.douban.com/simple/ pip
> python -m pip install --upgrade pip
不要直接通過pip命令來更新pip,否則pip會無法使用。
通過easy_install需要手動指一下國內的鏡像地址。
通過python調用pip來更新pip,會加載本地的pip的配置,如果有設置過鏡像源的話,就不需要再指了。如果沒有,也可以使用 -i 選項。
virtualenv為應用提供了隔離的Python運行環境,解決了不同應用間多版本的沖突問題。
要刪除一個虛擬環境,只需刪除它的文件夾。(執行 rm -rf venv )。
其實就是在啟動前,先設置環境變量。
每個虛擬環境里都有一個python的啟動文件,把文件的路徑加到環境變量PATH的最前面。
這樣你在啟動python的時候,找到的就是虛擬環境里的python文件。
如果把路徑切換到要執行的python所在的目錄,則直接能在當前目錄里找到啟動文件,就不會再去根據PATH環境變量來查找命令所在位置了。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。