pyenv 多版本的Python管理工具
https://github.com/pyenv/pyenv
pyenv-virtualenv 虚拟环境管理工具
https://github.com/pyenv/pyenv-virtualenv
mac系统安装
$ brew install pyenv $ brew install pyenv-virtualenv
配置环境变量
$ vim ~/.bash_profile
写入内容
# pyenv eval "$(pyenv init -)" eval "$(pyenv virtualenv-init -)"
配置生效
$ source ~/.bash_profile
其他系统安装
# 安装 $ curl -L https://github.com/pyenv/pyenv-installer/raw/master/bin/pyenv-installer | bash # 卸载 $ rm -fr ~/.pyenv
配置vim ~/.bashrc
export PATH="~/.pyenv/bin:$PATH" eval "$(pyenv init -)" eval "$(pyenv virtualenv-init -)"
参考:https://github.com/pyenv/pyenv-installer
使用
常用命令
pyenv install --list # 列出可安装版本 pyenv install <version> # 安装对应版本 pyenv install -v <version> # 安装对应版本,若发生错误,可以显示详细的错误信息 pyenv uninstall <version> # 卸载对应版本 pyenv versions # 显示当前使用的python版本 pyenv which python # 显示当前python安装路径 pyenv global <version> # 设置默认Python版本 pyenv local <version> # 当前路径创建一个.python-version, 以后进入这个目录自动切换为该版本 pyenv shell <version> # 当前shell的session中启用某版本, # 优先级: shell > local > global
虚拟环境管理
pyenv virtualenvs # 列出当前虚拟环境 pyenv virtualenv env # 从默认版本创建虚拟环境 pyenv virtualenv 3.6.4 env-3.6.4 # 创建3.6.4版本的虚拟环境 pyenv activate env-3.6.4 # 激活 env-3.6.4 这个虚拟环境 pyenv deactivate # 停用当前的虚拟环境 pyenv uninstall env-3.6.4 # 删除 env-3.6.4 这个虚拟环境
相比这个,我还是比较喜欢virtualenvwrapper的指令
workon py3
当然可以修改别名
$ vim ~/.bash_profile # 会出现过时提示 # alias workon="pyenv activate" alias workon="pyenv shell"
.python-version文件
目录中有 .python-version 文件,进入目录后会自动切换到对应的Python版本
$ python --version Python 2.7.16 $ cd /demo # 创建 .python-version文件 $ pyenv lolcal py370 $ ls .python-version $ cat .python-version py370 $ python --version Python 3.7.0
参考
pyenv 安装及常用命令
pyenv下载速度慢
手动下载安装包
https://npm.taobao.org/mirrors/python/
放到目录下, 没有就新建
~/.pyenv/cache
遇到的问题
1、切换环境的时候会提示:
$ pyenv activate py370 prompt changing will be removed from future release. configure `export PYENV_VIRTUALENV_DISABLE_PROMPT=1' to simulate the behavior.
如果按照提示配置,切换版本后,没有了版本提示,不知道自己处于什么版本
修改配置文件 ~/.bash_profile
$ vim ~/.bash_profile # pyenv eval "$(pyenv init -)" eval "$(pyenv virtualenv-init -)" export PYENV_VIRTUALENV_DISABLE_PROMPT=1 # 添加版本号提示 export PS1='($(pyenv version-name)) '$PS1
可是这样会导致PyCharm命令行多一个版本提示,无法忍受
(py370)(py370) $
还有一个办法是使用
$ pyenv shell py370
参考:
pyenv intall 下载速度特别慢?
https://github.com/pyenv/pyenv-virtualenv/issues/135
Linux环境下安装pyenv
安装pyenv
1、设置安装目录
安装目录默认是PYENV_ROOT=${HOME}/.pyenv,如果需要多用户使用,那么会遇到一些权限问题
自定义安装目录,让所有用户都能用:
$ vim /etc/profile.d/custom.sh # 设置目录 export PYENV_ROOT=/usr/local/pyenv
2、设置pyenv及其插件下载源
如果直接使用官网给出的下载方式,默认直接从github下载安装, 会非常慢
$ curl https://pyenv.run | bash # 或者 $ curl -L https://github.com/pyenv/pyenv-installer/raw/master/bin/pyenv-installer | bash
可以自动同步到gitee,并修改下载地址
(1)先手动下载安装文件
$ curl -L https://github.com/pyenv/pyenv-installer/raw/master/bin/pyenv-installer > pyenv-installer.sh
(2)修改下载源
if [ -n "${USE_GIT_URI}" ]; then # GITHUB="git://github.com" GITHUB="git://gitee.com" else # GITHUB="https://github.com" GITHUB="https://gitee.com/" fi # [github]pyenv -> [gitee]mouday checkout "${GITHUB}/mouday/pyenv.git" "${PYENV_ROOT}" checkout "${GITHUB}/mouday/pyenv-doctor.git" "${PYENV_ROOT}/plugins/pyenv-doctor" checkout "${GITHUB}/mouday/pyenv-installer.git" "${PYENV_ROOT}/plugins/pyenv-installer" checkout "${GITHUB}/mouday/pyenv-update.git" "${PYENV_ROOT}/plugins/pyenv-update" checkout "${GITHUB}/mouday/pyenv-virtualenv.git" "${PYENV_ROOT}/plugins/pyenv-virtualenv" checkout "${GITHUB}/mouday/pyenv-which-ext.git" "${PYENV_ROOT}/plugins/pyenv-which-ext"
(3)执行安装命令
$ bash pyenv-installer.sh
微信小程序获取系统时间、时间戳、时间时间戳加减
或者直接使用已修改好的版本,通过gt工具进行下载
# 直接下载安装 $ wget https://raw.githubusercontent.com/mouday/gt-project/main/templates/template-pyenv-installer.sh | bash # 或者使用 gt $ gt pyenv-installer.sh | bash
安装Python
默认是从Python官网下载,如果速度慢可以修改下载源
更多变量可参考: python-build
$ vim /etc/profile.d/custom.sh export PYTHON_BUILD_MIRROR_URL=https://npm.taobao.org/mirrors/python
或者,先手动下载到缓存文件夹中再安装
$ cd /usr/local/pyenv/cache $ wget https://npm.taobao.org/mirrors/python/3.7.0/Python-3.7.0.tar.xz
安装Python和创建虚拟环境
# 安装 $ pyenv install 3.7.0 # 创建虚拟环境 $ pyenv virtualenv 3.7.0 py370
问题:No module named ‘pyexpat’
Mac系统 10.14.10 下 安装Python,报错
$ pyenv install 3.7.0 No module named 'pyexpat'
解决方法
SDKROOT=/Library/Developer/CommandLineTools/SDKs/MacOSX10.14.sdk \ MACOSX_DEPLOYMENT_TARGET=10.14 \ pyenv install 3.7.0
如果还提示openssl错误,那么使用如下方法
更多问题可参考
https://github.com/pyenv/pyenv/wiki/Common-build-problems
Mac 10.14 下 pyenv 安装 No module named ‘pyexpat’