pyenv 如何同时使用两个版本的 Python ?

2018-10-03 02:24:35 +08:00
 phithon

这需求遇到好几次了,就是我想执行如下两个命令:

  1. python xxx
  2. python3 yyy

第一个用 2.7 执行,第二个用 3.7 执行。

但如果我设置pyenv local 2.7.10后,再执行python3 yyy的时候,会出现这种错误:

$ python3 yyy
pyenv: python3: command not found

The `python3' command exists in these Python versions:
  3.7.0

必须要切换到 3.7.0,才能执行。但下次执行python xxx的时候又得切换回去……有方法可以同时使用多个版本的 python 么?不用切换就执行能执行三条命令:python3.7.0 xxxpython3.6.5 yyypython2.7.10 zzz

ps. 其实平时工作里基本用不到 python2 了,不过 npm 装东西的时候要用,否则就失败……这问题不知道有没有解决方案?为啥 npm 装东西的时候可能用到 python2 ?

6051 次点击
所在节点    Python
17 条回复
arYUWang
2018-10-03 02:34:31 +08:00
LZ 要不要考虑用 Pycharm?

不管你装多少个 Python,Pycharm 都可以根据 Project 选择 Python Interpreter
Trim21
2018-10-03 02:57:29 +08:00
py 命令
py -2.7 --version
py -3.7 --version
在 venv 里也能直接调用外面的 python 版本

不过好像是 windows 独有的...
ysc3839
2018-10-03 03:06:20 +08:00
@Trim21 是 Windows 独有的。
Sylv
2018-10-03 03:09:22 +08:00
遇到问题先看文档:
https://github.com/pyenv/pyenv/blob/master/README.md#choosing-the-python-version

pyenv 是支持激活多个 Python 版本的,例如:
pyenv local 2.7.10 3.6.5 3.7.0
lightening
2018-10-03 03:17:42 +08:00
我用 pipenv

pipenv run python xxx/yyy
jasonqiao36
2018-10-03 08:48:56 +08:00
4 楼正解
franklinyu
2018-10-03 09:03:28 +08:00
NPM 用到的是 https://github.com/nodejs/node-gyp 吧,我記得 Python 3 也支持的
DAPTX4869
2018-10-03 13:36:15 +08:00
额...没用过 pyenv,直接软链 py3 跑了
jeffson
2018-10-03 22:12:29 +08:00
agagega
2018-10-04 00:48:05 +08:00
rbenv
ndenv
goenv
现在有 pyenv 了么...
phithon
2018-10-04 01:12:50 +08:00
@Sylv 读文档的成本有点高,因为不知道文档里是否有写。不着急的情况下我就喜欢来这问一下,感谢师傅。
PulpFunction
2018-10-04 11:11:21 +08:00
@agagega 有的,并且推荐使用
记得继承了 vir 那一套
likuku
2018-10-04 22:23:33 +08:00
pyenv virtualenv 搭配来一下多好,不同需求的应用不同独立虚拟版本环境。

“读文档成本有点高”?,这年头都开始流行拿到手开箱闷头直接就是干,而根本不读说明书的么?
就不怕大力出奇迹,不,烧掉厨房嘛?(笑)
likuku
2018-10-04 22:28:11 +08:00
@agagega pyenv 出来有年头了,

本节点 /go/python 右侧的 “值得关注的项目” 下列表里 pyenv 和 virtualenv 是赫然在列,并紧邻的。
phithon
2018-10-04 23:38:16 +08:00
@likuku 我觉得有价值的才会去花时间,比如 django,上个月才读文档读出了一个 CVE。这个你不用质疑我,行事风格不一样而已。
ddzzhen
2018-10-05 12:36:44 +08:00
软链接到不同版本即可
Owenjia
2018-10-10 00:08:24 +08:00
如果你用 Gentoo (Prefix) 的话可以直接前面加个环境变量解决,
比如
$ EPYTHON=python2.7 <program>

目前还没见到解决的比这个更好的……

FYI:
[1] https://wiki.gentoo.org/wiki/Project:Python/python-exec#Local_implementation_overrides
[2] https://wiki.gentoo.org/wiki/Project:Prefix#Developer_platforms

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/494660

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX