pipenv 筆記

最近開始寫一個新項 (lun) 目(zi),正好嘗試新一代 python 包 / 虛擬環境管理工具 pipenv,這個工具也是那個逆襲的帥哥程序員 Kenneth Reitz 寫的(即 Requests 以及一系列優質的 python 庫的作者),目前它已經被納入 pypa 下,可以算 Production-Ready 了。通過引入類似於 npm 的 lock 文件之類的機制,它能夠精確限制依賴的版本,解決了只使用 requirements.txt 文件管理依賴帶來的各種坑爹問題。另外,也接入了虛擬環境 (virtualenv) 管理的功能,這樣我們就可以只用這一個工具對對於 Python 開發一把梭,省去了很多麻煩。

除此之外,它還加入了在運行中顯示酷炫動畫和 emoji 逗你開心這種沒什麼卵用的功能。

這裏記錄一下開發中常用的命令,基本上用法非常順應直覺,和通常使用 pip + requirements.txt + virtualenv 這個組合並沒有太大區別。更多高端用法,盡在 https://docs.pipenv.org/

Pipfile & Pipfile.lock

Pipfile是用來替代原來的requirements.txt的。
內容類似下面這樣。source部分用來設置倉庫地址,packages部分用來指定項目依賴的包,dev-packages部分用來指定開發環境需要的包,這樣分開便於管理。

[[source]]

url = "https://pypi.python.org/simple"
verify_ssl = true
name = "pypi"


[packages]

requests = "*"
parsel = "==1.3.1"
celery = "*"


[dev-packages]

pymysql = "*"

Pipfile.lock中記錄了當前環境中安裝的依賴的版本號以及哈希,以保證每次裝出來的依賴都是一致的。

安裝

pip install pipenv

創建環境

一行命令搞定 virtualenv 和 pipfile 的初始化,它會在你的用戶目錄下對你的 virtualenv 進行統一管理。如果當前目錄下有 requirements.txt 文件,它會非常貼心地幫你自動轉換。(隨後你就可以把 requirements.txt 扔掉了)

初始化一個 python3 的環境

pipenv --three

初始化一個 python2 的環境(不過都已經 2018 年了,你還要用 2 嗎)

pipenv --two

初始化特定版本的環境

pipenv --python 3.6

pypy 也是可以的

pipenv --python pypy3

進入 / 退出環境

進入環境

pipenv shell

退出環境

exit

安裝 / 更新 / 卸載依賴

安裝項目已有的所有依賴,加--dev表示包括 Pipfile 的 dev-packages 中的依賴。

pipenv install --dev

安裝某個包。

pipenv install requests

安裝指定版本的包,安裝時加--dev表示加入到 dev 環境。

pipenv install parsel==1.3.1

從項目中更新某個包

pipenv update requests

或更新所有的包

pipenv update

從項目環境中移除某個包

pipenv uninstall requests

另外,Pipefile 和 Pipefile.lock 都會按照你的操作進行自動的更新,如果需要手動修改包的依賴條件,手工編輯 Pipefile 並進行安裝即可。

在 Dockerfile 中安裝依賴,加--system參數表示使用 pip 直接安裝相應依賴,不創建虛擬環境。

RUN pipenv install --deploy --system

打印環境中已安裝的包

pipenv graph

能夠更清晰地展示現有依賴包。

鎖定版本

更新 lock 文件鎖定當前環境的依賴版本

pipenv lock

環境變量管理

如果你開發調試時需要配一堆環境變量,可以寫到.env文件中,在pipenv shell進入虛擬環境時,它會幫你把這些環境變量加載好,非常方便。

例如寫一個.env文件

echo "FOO=23333" > .env

之後pipenv shell進入虛擬環境,echo $FOO就能看環境變量的值23333已經設置好了。

寫起項目來更加優♂雅了,誒嘿嘿~


美中不足,PyCharm 目前還不支持 pipenv,因此暫時還需要在 PyCharm 項目設置裏手工指定虛擬環境的路徑 (在~/.virtualenvs/下面找),密切關注什麼時候他們能把這個東西支持了 PY-26492 Add pipenv support

更新:PyCharm 從 2018.2 版本開始已經支持 pipenv 啦,趕快升級吧,撒花

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章