V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
phithon
V2EX  ›  Python

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

  •  
  •   phithon ·
    phith0n · 2018-10-03 02:24:35 +08:00 · 6069 次点击
    这是一个创建于 2255 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

    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 ?

    17 条回复    2018-10-10 00:08:24 +08:00
    arYUWang
        1
    arYUWang  
       2018-10-03 02:34:31 +08:00
    LZ 要不要考虑用 Pycharm?

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

    不过好像是 windows 独有的...
    ysc3839
        3
    ysc3839  
       2018-10-03 03:06:20 +08:00 via Android
    @Trim21 是 Windows 独有的。
    Sylv
        4
    Sylv  
       2018-10-03 03:09:22 +08:00 via iPhone   ❤️ 5
    遇到问题先看文档:
    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
        5
    lightening  
       2018-10-03 03:17:42 +08:00
    我用 pipenv

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

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

    本节点 /go/python 右侧的 “值得关注的项目” 下列表里 pyenv 和 virtualenv 是赫然在列,并紧邻的。
    phithon
        15
    phithon  
    OP
       2018-10-04 23:38:16 +08:00
    @likuku 我觉得有价值的才会去花时间,比如 django,上个月才读文档读出了一个 CVE。这个你不用质疑我,行事风格不一样而已。
    ddzzhen
        16
    ddzzhen  
       2018-10-05 12:36:44 +08:00 via Android
    软链接到不同版本即可
    Owenjia
        17
    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
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5732 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 02:54 · PVG 10:54 · LAX 18:54 · JFK 21:54
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.