由於py2 和 py3 上對語法的不兼容,對於使用者而言,如果同時安裝了 2個版本,那么就會導致環境的混淆,並且當我們在同一台開發機進行開發不同項目時,也許對相同的模塊有不同版本的需求,那么此時就需要我們進行運行環境的隔離
之前我們使用環境隔離基本用的都是virtualenv,但是當我們需要導出requests.txt 時,如果模塊有改動,那么就需要重新修改,實在是不智能,如能夠及時的維護requests.txt呢,那么pipenv 就體現了十足的功能
一、安裝
pip install pipenv
二、創建虛擬環境(前提是你的服務器此時已經安裝好對應的Python版本)
# 創建python3環境 pipenv --three
# 創建python2環境 pipenv --two
之后會看到對應的輸出(以py3示例)
[root@spider]# pipenv --three Creating a virtualenv for this project… Pipfile: ./spider/Pipfile Using /usr/bin/python3 (3.6.5) to create virtualenv… ⠸ Creating virtual environment...Already using interpreter /usr/bin/python3 Using base prefix '/data/ops/app/python3' New python executable in /root/.local/share/virtualenvs/spider-/bin/python3 Also creating executable in /root/.local/share/virtualenvs/spider-/bin/python Installing setuptools, pip, wheel... done. ✔ Successfully created virtual environment! Virtualenv location: /root/.local/share/virtualenvs/spider- Creating a Pipfile for this project…
此時證明你已經創建成功
三、進入虛擬環境
pipenv shell
如下輸出,看到括號內的環境名字代表已經創建並成功進入
[root@spider]# pipenv shell Launching subshell in virtual environment… . /root/.local/share/virtualenvs/spider-/bin/activate [root@spider]# . /root/.local/share/virtualenvs/spider-/bin/activate (spider) [root@spider]#
此時目錄下會多Pipfile文件,查看下
(spider) [root@spider]# cat Pipfile [[source]] name = "pypi" url = "https://pypi.org/simple" verify_ssl = true [dev-packages] [packages] [requires] python_version = "3.6"
四、安裝相關模塊並加入到Pipfile
隨着項目的開發當我們新安裝各種包時,pipenv 會自動幫我們生成Pipfile 和 Pipfile.lock文件
以安裝lxml示例
(spider) [root@ spider]# pipenv install lxml Installing lxml… ✔ Installation Succeeded Pipfile.lock (e067e5) out of date, updating to (ca72e7)… Locking [dev-packages] dependencies… Locking [packages] dependencies… ✔ Success! Updated Pipfile.lock (e067e5)! Installing dependencies from Pipfile.lock (e067e5)… ▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉ 2/2 —
此時cat Pipfile 會發現新安裝的lxml已經自動加入到了Pipfile文件中
(spider) [root@spider]# cat Pipfile [[source]] name = "pypi" url = "https://pypi.org/simple" verify_ssl = true [dev-packages] [packages] redis = "*" lxml = "*" [requires] python_version = "3.6"
當我們需要移植環境,下載所有依賴包時,只需要執行pipenv install 就可以自動下載所有Pipfile中的包(在Pipfile 和 Pipfile.lock目錄下)
pipenv install
五、卸載全部包並從Pipfile中移除
pipenv uninstall --all
六、退出環境
exit
溫馨提示
如果在當前環境中的子目錄想在重新創建一個虛擬環境的話,是不能直接按照上面操作成功的,因為在pipenv 中是默認找到父及目錄的Pipfile 進行加載環境,如果非要重新創建新的,那么就退出父及,重新創建吧
good bye