Python编程:pyenv管理多个python版本环境

简介: Python编程:pyenv管理多个python版本环境

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’

相关文章
|
23天前
|
存储 缓存 Java
Python高性能编程:五种核心优化技术的原理与Python代码
Python在高性能应用场景中常因执行速度不及C、C++等编译型语言而受质疑,但通过合理利用标准库的优化特性,如`__slots__`机制、列表推导式、`@lru_cache`装饰器和生成器等,可以显著提升代码效率。本文详细介绍了这些实用的性能优化技术,帮助开发者在不牺牲代码质量的前提下提高程序性能。实验数据表明,这些优化方法能在内存使用和计算效率方面带来显著改进,适用于大规模数据处理、递归计算等场景。
58 5
Python高性能编程:五种核心优化技术的原理与Python代码
|
27天前
|
Shell Linux Ruby
Python3虚拟环境venv
`venv` 是 Python 的虚拟环境工具,用于为不同项目创建独立的运行环境,避免依赖冲突。通过 `python3 -m venv` 命令创建虚拟环境,并使用 `source bin/activate` 激活。激活后,所有 Python 包将安装在该环境中,不影响系统全局环境。退出环境使用 `deactivate` 命令。每个虚拟环境拥有独立的包集合,确保项目间的隔离性。删除虚拟环境只需删除其目录即可。
86 34
|
28天前
|
测试技术 Python
【03】做一个精美的打飞机小游戏,规划游戏项目目录-分门别类所有的资源-库-类-逻辑-打包为可玩的exe-练习python打包为可执行exe-优雅草卓伊凡-持续更新-分享源代码和游戏包供游玩-1.0.2版本
【03】做一个精美的打飞机小游戏,规划游戏项目目录-分门别类所有的资源-库-类-逻辑-打包为可玩的exe-练习python打包为可执行exe-优雅草卓伊凡-持续更新-分享源代码和游戏包供游玩-1.0.2版本
106 31
【03】做一个精美的打飞机小游戏,规划游戏项目目录-分门别类所有的资源-库-类-逻辑-打包为可玩的exe-练习python打包为可执行exe-优雅草卓伊凡-持续更新-分享源代码和游戏包供游玩-1.0.2版本
|
1月前
|
SQL 分布式计算 数据处理
云产品评测|分布式Python计算服务MaxFrame | 在本地环境中使用MaxFrame + 基于MaxFrame实现大语言模型数据处理
本文基于官方文档,介绍了由浅入深的两个部分实操测试,包括在本地环境中使用MaxFrame & 基于MaxFrame实现大语言模型数据处理,对步骤有详细说明。体验下来对MaxCompute的感受是很不错的,值得尝试并使用!
53 1
|
1月前
|
人工智能 Python
【02】做一个精美的打飞机小游戏,python开发小游戏-鹰击长空—优雅草央千澈-持续更新-分享源代码和游戏包供游玩-记录完整开发过程-用做好的素材来完善鹰击长空1.0.1版本
【02】做一个精美的打飞机小游戏,python开发小游戏-鹰击长空—优雅草央千澈-持续更新-分享源代码和游戏包供游玩-记录完整开发过程-用做好的素材来完善鹰击长空1.0.1版本
56 7
|
1月前
|
Shell 程序员 开发者
轻松搞定在Python中构建虚拟环境
本教程教你如何使用业界公认的最佳实践,创建一个完全工作的Python开发环境。虚拟环境通过隔离依赖项,避免项目间的冲突,并允许你轻松管理包版本。我们将使用Python 3的内置`venv`模块来创建和激活虚拟环境,确保不同项目能独立运行,不会相互干扰。此外,还将介绍如何检查Python版本、激活和停用虚拟环境,以及使用`requirements.txt`文件共享依赖项。 通过本教程,你将学会: - 创建和管理虚拟环境 - 避免依赖性冲突 - 部署Python应用到服务器 适合新手和希望提升开发环境管理能力的开发者。
110 2
|
1月前
|
人工智能 编译器 Python
python已经安装有其他用途如何用hbuilerx配置环境-附带实例demo-python开发入门之hbuilderx编译器如何配置python环境—hbuilderx配置python环境优雅草央千澈
python已经安装有其他用途如何用hbuilerx配置环境-附带实例demo-python开发入门之hbuilderx编译器如何配置python环境—hbuilderx配置python环境优雅草央千澈
41 0
python已经安装有其他用途如何用hbuilerx配置环境-附带实例demo-python开发入门之hbuilderx编译器如何配置python环境—hbuilderx配置python环境优雅草央千澈
|
1月前
|
Python
探索Python虚拟环境:virtualenv、venv与pipenv比较
在Python开发中,有效的环境管理至关重要。virtualenv、venv和pipenv是常用的虚拟环境管理工具。virtualenv支持Python 2.7+和3.3+,可创建独立环境;venv为Python 3.3+内置库,简单轻量但功能有限;pipenv则结合了包管理和虚拟环境管理,生成Pipfile.lock确保依赖确定性和安全性,推荐作为首选工具。
|
2月前
|
机器学习/深度学习 Rust 算法
Python环境管理的新选择:UV和Pixi,高性能Python环境管理方案
近期Python生态系统在包管理领域发生了重要变化,Anaconda调整商业许可证政策,促使社区寻找更开放的解决方案。本文介绍两款新一代Python包管理工具:UV和Pixi。UV用Rust编写,提供高性能依赖解析和项目级环境管理;Pixi基于Conda生态系统,支持conda-forge和PyPI包管理。两者分别适用于高性能需求和深度学习项目,为开发者提供了更多选择。
323 2
|
2月前
|
Python
[oeasy]python055_python编程_容易出现的问题_函数名的重新赋值_print_int
本文介绍了Python编程中容易出现的问题,特别是函数名、类名和模块名的重新赋值。通过具体示例展示了将内建函数(如`print`、`int`、`max`)或模块名(如`os`)重新赋值为其他类型后,会导致原有功能失效。例如,将`print`赋值为整数后,无法再用其输出内容;将`int`赋值为整数后,无法再进行类型转换。重新赋值后,这些名称失去了原有的功能,可能导致程序错误。总结指出,已有的函数名、类名和模块名不适合覆盖赋新值,否则会失去原有功能。如果需要使用类似的变量名,建议采用其他命名方式以避免冲突。
52 14

热门文章

最新文章

推荐镜像

更多