【问题标题】:switching between python 2 and 3 versions while scripting在编写脚本时在 python 2 和 3 版本之间切换
【发布时间】:2013-09-02 09:08:04
【问题描述】:

我通常使用 python 2.7 进行开发,但想开始在 python 3.x 中创建一些工具。什么是让两者并排运行的最简单方法,同时对我在哪里安装的库保持一些表面上的控制......

如果我使用pyenv 在版本之间切换,它会传播到通用的 shebang 行吗?类似的东西

#!/usr/bin/env python

或者更好的是,我可以指定shebang中的哪个python吗?

#!/usr/bin/env python3

我期待很多“使用virtualenv”的回复。这真的是唯一的方法吗?我觉得我想在我的系统上安装“基础”python 以及我安装的任何库,这样我就可以通过输入类似 pyenv global 3.2.3 之类的简单内容在两个环境之间进行切换

我目前正在使用 OSX,Mountain Lion。


试图解释得更好一点,我有两个可供选择的问题:

  • 如果我使用 virtualenv 之类的东西,我是否会失去在不更改环境的情况下交替运行 python2 和 python3 脚本的能力(即仅通过 shebang)?

  • 相比之下,如果我使用两个独立的版本安装,我如何控制/知道pipeasy_install 将安装什么。


更新:目前在shebang行中使用python3,并使用pip3将包安装到python3...似乎工作正常。

【问题讨论】:

  • 你用的是什么平台?
  • 谢谢@Marcin。我补充说我正在使用 OSX。
  • 这没有帮助。你在问一个问题。我来这里是为了找到这个问题的答案。现在您“更新”问题以说明您已经以不同的方式解决了您的实际问题。对你有好处,但我在这里的原因是其他方式对我来说不是一个选择。我想要原始问题的答案。
  • ? @reinierpost,不确定您的问题是什么,但下面有一个尝试的答案。我在最初被问到一年多后更新了我的帖子,所以....我不认为这会阻止人们回答。很高兴您有最初的问题,如果您发现一些行之有效的方法,如果您能在下面提供该答案作为答案,将会很有帮助。
  • 对不起,我太仓促了,错误地解释了你的问题。

标签: python macos python-2.7 python-3.x virtualenv


【解决方案1】:

您有一些可能的方法与操作系统略有不同:

  1. 将 python 2 作为 python 调用,将 3 作为 python3 调用
  2. .py 和 .py3 的扩展名
  3. Virtualenv
  4. 用于切换环境的脚本或批处理文件。我使用它来针对不同版本的 python 2 测试我的代码。请注意,您可以同时在不同的命令会话中设置不同的环境。
  5. 在虚拟机中测试。
  6. 使用允许您在项目或调试会话的基础上指定 python 版本的 IDE 我使用 WingIDE,但它不是唯一允许这样做的。

查看 6 并在 python 3 中工作可能比为旧安装返回转换为 2.7 更值得。

另请参阅here,了解如何在带有 virtualevn 和不带 virtualevn 的 python 3 下安装 python 3 库(根据需要修改版本号)。

更新 - windows python 启动器

此外,在 Windows 上,当您安装 Python 3 时,您可以选择将 Python 启动器(py.exe 和 pyw.exe)安装到 Windows 目录。 py 启动器具有以下行为:

  • py 启动 python 3 交互式最新安装提示(首选 64 位)
  • py -2 启动 python 2 交互式最新安装提示(首选 64 位)
  • py somescript *检查命名文件中的shebang,并根据需要使用python 2(默认为没有shebang)或3启动它。
  • py -2 somescript 在最新的python 2(首选64位)下启动脚本
  • py -3 somescript 在 python 3 下启动脚本(首选 64 位)
  • py -3.5 somescript 在 python 3.5 下启动脚本(首选 64 位)
  • py -3.5-32 somescript 在python 3.5(32位)下启动脚本
  • pyw 启动器在没有控制台的情况下具有相同的行为,类似于 pythonw。

将 .py 文件与 py.exe 关联,将 .pyw 文件与 pyw.exe 关联将导致 shebang 行受到尊重。

另外使用py -3.5-32 -m pip install some_package会专门安装some_package到32位python 3.5安装等

免责声明:我是一些即将发布的enhancements 到 python 启动器的作者,以稍微扩展上述选项。

【讨论】:

  • 谢谢史蒂夫。如果我只进行两次安装并使用 python3 我如何控制安装位置?将我们的 Ubuntu 机器从 2.6 更新到 2.7 甚至是一场磨难,因为不再找到所有库...
  • 这里的第二个答案stackoverflow.com/questions/10763440/… 为您提供了答案。
  • 注:你最好使用你的包管理器来安装 python3-pip 这会给你 pip3。
  • 在工作中澄清一下,我正在使用 python 2.5.4、2.6.6 和 2.7.3 以及 python 3.3 来支持不同年龄的项目。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-10-28
  • 1970-01-01
  • 1970-01-01
  • 2014-12-23
  • 2019-02-15
相关资源
最近更新 更多