折騰 Python 版本管理
最近開始寫 Python,對於一直寫 JS 的我來說,十分不習慣 Python 的版本管理,一個專案的依賴裝在了全域性。強迫症的我就開始找 Python 的版本管理方案。
- ofollow,noindex" target="_blank">pyenv 管理多版本的 Python,類似於 Node.js 的 nvm
- pipenv 管理多版本的包,類似於 yarn.lock / package-lock.json
pyenv
install
-
install
curl -L https://raw.githubusercontent.com/pyenv/pyenv-installer/master/bin/pyenv-installer | bash
-
.zshrc
新增:export PATH="$HOME/.pyenv/bin:$PATH" eval "$(pyenv init -)" eval "$(pyenv virtualenv-init -)"
-
安裝不同版本 Python
CFLAGS="-I$(brew --prefix openssl)/include -I$(xcrun --show-sdk-path)/usr/include" \ LDFLAGS="-L$(brew --prefix openssl)/lib" \ pyenv install -v 3.5.0
usage
-
檢視版本
pyenv versions # 檢視系統當前安裝的python列表 pyenv version # 檢視系統當前使用的python版本
-
設定版本
pyenv global # 設定全域性 Python 版本,將版本號寫入~/.pyenv/version檔案 pyenv local # 設定當前專案 Python 版本,將版本號寫入當前目錄下的.python-version檔案
pipenv
install
-
安裝:
python3 -m pip install --upgrade --force-reinstall pip pip3 install pipenv
-
.zshrc
新增:export PIPENV_VENV_IN_PROJECT=1 # 在每個專案的根目錄下儲存虛擬環境目錄.venv
usage
pipenv --two/three # 建立一個虛擬環境
會生成 Pipfile
和 Pipfile.lock
,類似 package.json
和 yarn.lock
。還支援 pipenv --python 3.7.0
這種指定版本的用法,如果本地沒有這個版本,就會安裝這個版本。
其他用法:
pipenv install [package] pipenv graph pipenv shell
最佳實踐
pyenv 安裝多版本 Python 後,用他切 local 版本,其他包版本的事交給 pipenv。
-
pyenv install -v 3.5.0
-
cd envtest
-
pyenv local 3.5.0
:python -V
: 3.5.0 (設定成功) -
pipenv --python 3.5.0
-
pipenv shell
->python -V
: 3.5.0 (設定成功)