[python]linux切换版本
前言
我机器用的python是3.10
的,虽然是主要版本,但是目前有些库还是会报错,比如我这两天想用lxml
,但是不支持3.10
,报错:
ImportError Traceback (most recent call last)
Input In [2], in <cell line: 1>()
----> 1 from lxml import etree
2 path_to_file = '/home/ya/xml/PostHistory.xml'
4 def iterate_xml(xmlfile):
ImportError: /home/ya/.local/lib/python3.10/site-packages/lxml/etree.cpython-310-x86_64-linux-gnu.so: undefined symbol: _PyGen_Send
pyenv
pyenv lets you easily switch between multiple versions of Python. It's simple, unobtrusive, and follows the UNIX tradition of single-purpose tools that do one thing well.
pyenv 能让你简单的切换python的版本,
pyenv是如何工作的
通过即时注入path
的方式,拦截python
命令
因为操作系统是通过查找类似/usr/local/bin:/usr/bin:/bin
目录的方式来找到执行的程序,在操作系统找到后,就调用对应的程序来执行.
pyenv
是通过在环境变量中注入一个自定义的路径,来拦截要调用的python版本的
比如:$(pyenv root)/shims:/usr/local/bin:/usr/bin:/bin
安装
curl https://pyenv.run | bash
或者
curl -L https://github.com/pyenv/pyenv-installer/raw/master/bin/pyenv-installer | bash
回车即可
重新打开一个shell界面,输入sh pyenv -v
看到输出版本号,则代表安装成功.
如果提示找不到命令,检查环境变量是否增加,可以手动增加,比如编辑文件vim ~/.bashrc
,在文件末尾增加
export PATH="$HOME/.pyenv/bin:$PATH"
eval "$(pyenv init --path)"
eval "$(pyenv virtualenv-init -)"
然后使用命令source ~/.bashrc
刷新环境变量即可.
安装python指定版本
我本地已经有了3.10
的版本,我现在安装一个3.9的版本
输入
pyenv install 3.9.10
因为传输速度实在太慢,我需要套个代理来加速下载,执行
export https_proxy=socks5://xxxx:1080
export http_proxy=socks5://xxxx:1080
[ya@ya-PC ~]$ pyenv install 3.9.10
Downloading Python-3.9.10.tar.xz...
-> https://www.python.org/ftp/python/3.9.10/Python-3.9.10.tar.xz
Installing Python-3.9.10...
Installed Python-3.9.10 to /home/ya/.pyenv/versions/3.9.10
切换python指定版本
这里提供三种方式:
第一种,只针对当前的shell环境切换版本,使用命令
pyenv shell 3.9.10
第二种,当前目录或者子目录中选择.(不知道是个啥)
pyenv local <version>
第三种,针对全局的(当前用户)
pyenv global 3.9.10
我使用了第三种,直接执行成功切换,可以使用python3 -V
查看版本
参考资料
本文来自:[python]linux切换版本-小码农,转载请保留本条链接,感谢!
- 本文标签: env python 环境变量
- 本文链接: https://djc8.cn/archives/python-linux-switch-version.html
- 版权声明: 本文由小码农原创发布,转载请遵循《署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0)》许可协议授权