pipenv 笔记
最近開始寫一個新項 (lun) 目(zi),正好嘗試新一代 python 包 / 虛擬環(huán)境管理工具?pipenv,這個工具也是那個逆襲的帥哥程序員 Kenneth Reitz 寫的(即 Requests 以及一系列優(yōu)質(zhì)的 python 庫的作者),目前它已經(jīng)被納入 pypa 下,可以算 Production-Ready 了。通過引入類似于 npm 的 lock 文件之類的機(jī)制,它能夠精確限制依賴的版本,解決了只使用 requirements.txt 文件管理依賴帶來的各種坑爹問題。另外,也接入了虛擬環(huán)境 (virtualenv) 管理的功能,這樣我們就可以只用這一個工具對對于 Python 開發(fā)一把梭,省去了很多麻煩。
除此之外,它還加入了在運(yùn)行中顯示酷炫動畫和 emoji 逗你開心這種沒什么卵用的功能。
這里記錄一下開發(fā)中常用的命令,基本上用法非常順應(yīng)直覺,和通常使用 pip + requirements.txt + virtualenv 這個組合并沒有太大區(qū)別。更多高端用法,盡在?https://docs.pipenv.org/
Pipfile & Pipfile.lock
Pipfile是用來替代原來的requirements.txt的。
內(nèi)容類似下面這樣。source部分用來設(shè)置倉庫地址,packages部分用來指定項目依賴的包,dev-packages部分用來指定開發(fā)環(huán)境需要的包,這樣分開便于管理。
而Pipfile.lock中記錄了當(dāng)前環(huán)境中安裝的依賴的版本號以及哈希,以保證每次裝出來的依賴都是一致的。
安裝
pip install pipenv創(chuàng)建環(huán)境
一行命令搞定 virtualenv 和 pipfile 的初始化,它會在你的用戶目錄下對你的 virtualenv 進(jìn)行統(tǒng)一管理。如果當(dāng)前目錄下有 requirements.txt 文件,它會非常貼心地幫你自動轉(zhuǎn)換。(隨后你就可以把 requirements.txt 扔掉了)
初始化一個 python3 的環(huán)境
pipenv --three初始化一個 python2 的環(huán)境(不過都已經(jīng) 2018 年了,你還要用 2 嗎)
pipenv --two初始化特定版本的環(huán)境
pipenv --python 3.6pypy 也是可以的
pipenv --python pypy3進(jìn)入 / 退出環(huán)境
進(jìn)入環(huán)境
pipenv shell退出環(huán)境
exit安裝 / 更新 / 卸載依賴
安裝項目已有的所有依賴,加--dev表示包括 Pipfile 的 dev-packages 中的依賴。
pipenv install --dev安裝某個包。
pipenv install requests安裝指定版本的包,安裝時加--dev表示加入到 dev 環(huán)境。
pipenv install parsel==1.3.1從項目中更新某個包
pipenv update requests或更新所有的包
pipenv update從項目環(huán)境中移除某個包
pipenv uninstall requests另外,Pipefile 和 Pipefile.lock 都會按照你的操作進(jìn)行自動的更新,如果需要手動修改包的依賴條件,手工編輯 Pipefile 并進(jìn)行安裝即可。
在 Dockerfile 中安裝依賴,加--system參數(shù)表示使用 pip 直接安裝相應(yīng)依賴,不創(chuàng)建虛擬環(huán)境。
RUN pipenv install --deploy --system打印環(huán)境中已安裝的包
pipenv graph能夠更清晰地展示現(xiàn)有依賴包。
鎖定版本
更新 lock 文件鎖定當(dāng)前環(huán)境的依賴版本
pipenv lock環(huán)境變量管理
如果你開發(fā)調(diào)試時需要配一堆環(huán)境變量,可以寫到.env文件中,在pipenv shell進(jìn)入虛擬環(huán)境時,它會幫你把這些環(huán)境變量加載好,非常方便。
例如寫一個.env文件
echo "FOO=23333" > .env之后pipenv shell進(jìn)入虛擬環(huán)境,echo $FOO就能看環(huán)境變量的值23333已經(jīng)設(shè)置好了。
寫起項目來更加優(yōu)♂雅了,誒嘿嘿~
美中不足,PyCharm 目前還不支持 pipenv,因此暫時還需要在 PyCharm 項目設(shè)置里手工指定虛擬環(huán)境的路徑 (在~/.virtualenvs/下面找),密切關(guān)注什么時候他們能把這個東西支持了?PY-26492 Add pipenv support
更新:PyCharm 從 2018.2 版本開始已經(jīng)支持 pipenv 啦,趕快升級吧,撒花
總結(jié)
- 上一篇: python 数据库
- 下一篇: debian9 配置ssh 允许 roo