管理多个相互独立的
Python
虚拟开发环境
最终实现
Python
版本
pyenv
可以改变全局的Python
版本,安装多个版本的Python
, 设置目录级别的Python
版本。
brew install pyenv
或 pip install pyenv
pyenv install -list
可安装版本pyenv install <version>
安装对应版本pyenv uninstall <version>
卸载指定版本pyenv versions
显示当前使用的版本pyenv which python
显示当前 Python
安装路径pyenv global <version>
设置全局的 Python
版本,通过将版本号写入 ~/.pyenv/version 文件的方式。pyenv local <version>
设置 Python
局部版本,通过将版本号写入当前目录下的 .python-version
文件的方式。pyenv shell <version>
设置面向 shell 的 Python 版本,通过设置当前 shell 的 PYENV_VERSION 环境变量的方式。优先级最高。pyenv shell --unset
可以用于取消当前 shell 设定的版本。pyenv rehash
创建垫片路径(为所有已安装的可执行文件创建 shims,如:~/.pyenv/versions//bin/,因此,每当你增删了 Python 版本或带有可执行文件的包(如 pip)以后,都应该执行一次本命令)Python 优先级
shell > local > global
我这里出现了错误,解决方式在最后
➜ ~ pyenv install 3.7.0
python-build: use openssl from homebrew
python-build: use readline from homebrew
Downloading Python-3.7.0.tar.xz...
-> https://www.python.org/ftp/python/3.7.0/Python-3.7.0.tar.xz
Installing Python-3.7.0...
python-build: use readline from homebrew
WARNING: The Python sqlite3 extension was not compiled. Missing the SQLite3 lib?
Installed Python-3.7.0 to /Users/hubo/.pyenv/versions/3.7.0
没有将 sqlite3
编译完成,这个可以通过 brew install sqlite
安装。
综合了 virtualenv , pip 和 pyenv 三者的功能。能够自动为项目创建和管理虚拟环境。
pipenv使用 Pipfile 和 Pipfile.lock 来管理依赖包
brew install pipenv
或 pip install pipenv
lockfile
在.bashrc
或 bash_profile
下添加下面命令,pipenv会在当前目录下创建.venv的目录,以后都会把模块装到这个.venv下
export PIPENV_VENV_IN_PROJECT=1 # 自动激活虚拟环境
创建虚拟环境的时候,我们可以指定使用的python版本信息,类似pyenv。
pipenv会自动扫描系统寻找合适的版本信息,如果找不到的话,同时又安装了pyenv, 它会自动调用pyenv下载对应的版本的python
$ pipenv --python 3
$ pipenv --python 3.6
$ pipenv --python 2.7.14
➜ demo1 pipenv --python 3.6.0
Warning: Python 3.6.0 was not found on your system...
Would you like us to install CPython 3.6.0 with pyenv? [Y/n]: y
Installing CPython 3.6.0 with pyenv (this may take a few minutes)...
⠋
brew install direnv
# 在~/.zshrc文件末尾追加
$ echo 'eval "$(direnv hook zsh)"' >> ~/.zshrc
在虚拟环境目录下
$ pipenv --three
$ echo layout_pipenv >> .envrc
zipimport.ZipImportError: can't decompress data; zlib not available
make: *** [install] Error 1
问题是缺少zlib
brew install zlib
WARNING: The Python sqlite3 extension was not compiled. Missing the SQLite3 lib?
检查一下 zlib 或 sqlite3 是不是已经安装,但即使已经通过 homebrew 安装了以上 Package,依然会出现这些错误。这是因为 pyenv 无法找到 homebrew 安装的库的路径,需要手动指定:
export LDFLAGS="-L/usr/local/opt/zlib/lib -L/usr/local/opt/sqlite/lib"
export CPPFLAGS="-I/usr/local/opt/zlib/include -I/usr/local/opt/sqlite/include"