在编写脚本时在python 2和3版本之间切换

ber*_*roe 5 python macos virtualenv python-2.7 python-3.x

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

如果我pyenv用来在版本之间切换,它会传播到通用的shebang线吗?就像是

#!/usr/bin/env python
Run Code Online (Sandbox Code Playgroud)

甚至更好,我可以指定shebang中的哪个python?

#!/usr/bin/env python3
Run Code Online (Sandbox Code Playgroud)

我期待很多"使用virtualenv"回复.这真的是唯一的方法吗?我觉得我想在我的系统上安装"基础"python,无论我安装了什么库,这样我就可以通过键入类似于pyenv global 3.2.3

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


试着更好地解释一下,我有两个替代问题:

  • 如果我使用类似的东西virtualenv,我是否会失去交替运行python2和python3脚本的能力,而不会改变环境(即,只是通过shebang)?

  • 相反,如果我使用两个独立版本安装,我如何控制/知道将安装什么pipeasy_install例如.


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

Ste*_*nes 3

有几种可能的方法因操作系统而略有不同:

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

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

另请参阅此处,了解如何使用 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 安装等。

免责声明:我是 python 启动器即将推出的一些增强功能的作者,以稍微扩展上述选项。