pipenv 使用簡介

以前在開發時一直使用 conda 使用做爲虛擬環境管理工具,但有時候會常常會臨時性的須要一個虛擬環境,
若是使用 conda create 建立一個新環境,耗時不說,有時候還忘了刪除,最後系統裏一堆的虛擬環境。
偶然發現 pipenv 後試用了一下,感受它的工做流相比以前虛擬環境環境加 requirements.txt
的方式更加簡單方便。python

安裝

pipenv 最好和 Python3 一塊兒使用git

最簡單的方式是經過 pip 安裝github

pip3 install pipenv

若是是 mac 用戶也能夠經過 Homebrew 安裝shell

brew install pipenv

若是沒有安裝 pip 能夠經過如下方式安裝bash

https://raw.githubusercontent.com/kennethreitz/pipenv/master/get-pipenv.py | python

使用

建立新項目

mkdir myproject
pipenv install

這會在 myproject 文件下建立 PipfilePipfile.lock 文件,同時建立虛擬環境
虛擬環境名稱爲 pipenv 加項目路徑哈希值,如 pipenv-7BgKv-oX工具

ll
-rw-r--r-- 1 rookie rookie 138 4月  20 20:24 Pipfile
-rw-r--r-- 1 rookie rookie 453 4月  20 20:24 Pipfile.lock

虛擬機環境默認位於 ~/.local/share/virtualenvs/,因爲 pipenv 經過路徑名哈希值與虛擬環境
創建映射關係,所以若是移動項目會致使虛擬環境不可用。能夠經過在 .bashrc 添加
export PIPENV_VENV_IN_PROJECT=1 讓 pipenv 在項目文件中建立虛擬環境,這時候虛擬環境位於 myproject/.venv 文件夾下。ui

若是項刪除虛擬環境,在項目頂層目錄下運行this

pipenv --rm

若是要指定 Python 版本,能夠經過 --python 完成,如我要安裝 python3.7 的虛擬環境url

pipenv --python 3.7

配置文件

# cat Pipfile
[[source]]
name = "pypi"
url = "https://pypi.org/simple"
verify_ssl = true

[dev-packages]

[packages]

[requires]
python_version = "3.6"

[[source]] 模塊指定了 pip 源位置,一般國內 pip 源加快下載速度spa

[[source]]
name = "tuna"
url = "https://pypi.tuna.tsinghua.edu.cn/simple/"
verify_ssl = true

[[source]]
name = "pypi"
url = "https://pypi.org/simple"
verify_ssl = true

[dev-packages]

[packages]

[requires]
python_version = "3.6"

安裝和卸載 packages

你能夠編輯 packages, 添加項目須要的 Python 庫,如 requests='**',甚至能夠指定不一樣
平臺下的包配置,詳細配置參考 Advanced Usage of Pipenv
不過你能夠經過pipenv install requests
來安裝,pipenv 將會自動更新 PipfilePipfile.lock
[dev-packages] 則是一些開發依賴但不是項目依賴包的存放目錄,如 pylint 等 pep8 檢查工具
能夠在安裝時指定 pipenv install --dev將某個包聲明爲 dev-package
卸載 package 也很簡單

pip uninstall

若是經過 pipenv 命令安裝和卸載 package,安裝或卸載完成後還會更新 Pipfile.lock 文件,有時候會卡在這個步驟。一般能夠 ctrl+c 強制推出,刪除 Pipfile.lock, 而後

pipenv lock

從新生成該文件

進入和退出虛擬環境

進入虛擬環境

cd myproject

pipenv shell

退出虛擬環境

pipenv exit

高級用法

有時候某些 package 須要指定特定的 pip 源,能夠經過以下方式指定,很是簡便

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

[[source]]
url = "http://pypi.home.kennethreitz.org/simple"
verify_ssl = false
name = "home"

[dev-packages]

[packages]
requests = {version="*", index="home"}
maya = {version="*", index="pypi"}
records = "*"

有時候須要生成 requirements.txt 文件

pipenv lock -r

若是隻須要生成 dev-pakcages 列表,也很簡單

pipenv lock -r --dev

自動載入環境變量文件。若是 .env 文件在項目根目錄下,pipenv shellpipenv run
會自動載入文件中的環境變量。

$ cat .env
HELLO=WORLD

$ pipenv run python
Loading .env environment variables…
Python 2.7.13 (default, Jul 18 2017, 09:17:00)
[GCC 4.2.1 Compatible Apple LLVM 8.1.0 (clang-802.0.42)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import os
>>> os.environ['HELLO']
'WORLD'

pipenv 還支持自定義命令,這對於某些開發過程當中常常使用的命令來講很是方便。
Pipfile 中添加 [scripts]

[scripts]
printspam = "python -c \"print('I am a silly example, no one would need to do this')\""

經過 pipenv run <custom_command> 便可運行自定義命令,如

pipenv run echospam "indeed"
I am really a very silly example indeed

更多高級用戶能夠參考 官方文檔


最後歡迎關注個人 Blog-PrivateRookie

相關文章
相關標籤/搜索