【问题标题】:Cross-platform way to invoke Python 3.x command调用 Python 3.x 命令的跨平台方式
【发布时间】:2012-04-27 01:49:02
【问题描述】:

python 命令通常映射到跨不同操作系统的最新 Python 2.x 编译器。但是,是否有这样的标准方式来调用 Python 3.x 解释器(已安装任何版本或最新版本)?

...所以你可以运行你的 Python 3.x 兼容脚本:

 python3 yourscript.py

作为奖励,是否还存在调用 virtualenv 命令为 Python 3 创建本地安装的跨平台方法?

  • Ubuntu 似乎提供了 python3 命令,似乎没有为 Python 3.x 提供预打包的 virtualenv

  • OSX(Macports、BSD?)更喜欢 python-3.2、python-3.1 命令,提供 virtualenv-3.2、virtualenv-3.1

目前我正在尝试一些试错法来完成工作

【问题讨论】:

  • 在 Ubuntu 上,你可以使用 virtualenv -p python3 mypy3venv 来创建一个 virtualenv。 -p 选项应该适用于任何平台,但我认为它仍然取决于 Python 3 可执行文件的名称。
  • 在 Windows 上,python 是 Python 所有 版本的默认名称,3.x 也是。
  • @ThomasK 不幸的是,它至少在 Ubuntu 10.04 上不起作用 [~]# uname -a Linux Ubuntu-1004-lucid-64-minimal 2.6.32-39-server #86-Ubuntu SMP [ ~]# virtualenv -p python3 mypy3venv 使用解释器运行 virtualenv /usr/bin/python3 文件“/usr/lib/pymodules/python2.6/virtualenv.py”,第 16 行,ImportError 除外,e: ^ SyntaxError: invalid syntax跨度>
  • @MikkoOhtamaa:我猜 virtualenv 10.04 的版本太旧了。我认为,对于 Python 3,您至少需要 1.6 版。
  • ThomasK:我正在使用这些说明来解决这个问题miohtama.github.com/vvv/…

标签: python windows linux macos command-line


【解决方案1】:

阅读PEP 394 The "python" Command on Unix-Like SystemsPEP 397 Python launcher for Windows 之后,我想你最好的选择是在你的脚本中使用#! /usr/bin/python3 shebang 并指导Windows 用户安装和使用Python 启动器py 命令)而不是python 命令。

【讨论】:

    【解决方案2】:

    对此没有完整的解决方案。客户端可能未安装 Python3。那你会怎么做?您可以先在脚本执行时检查 Python 版本。

    print sys.version_info
    sys.version_info(major=2, minor=7, micro=2, releaselevel='final', serial=0)
    

    如果执行的 Python 不是 Python3,那么您可以要求用户安装它或使用 Python3 解释器调用您的脚本等。当用户使用 Python2 调用您的脚本时,您可能决定根本无法运行.有很多方法(常见问题解答、系统要求等)通知用户该脚本需要 Python3,然后让他们处理该问题,而不是您尝试在代码中这样做。

    我已经在 Microsoft .Net 运行时中看到了这一点。当用户没有所需的 .Net 版本时,程序会在继续之前要求用户安装它,并将用户指向一个 URL。

    另一个建议是,在 Linux 系统上,您可以通过将其添加到脚本顶部来更喜欢 Python3(如果已安装):

    #!/usr/local/bin/python3
    

    当然,您必须确定该路径存在。您也可以使用env 以更灵活的方式执行此操作。

    【讨论】:

      猜你喜欢
      • 2018-06-15
      • 1970-01-01
      • 1970-01-01
      • 2015-01-03
      • 1970-01-01
      • 1970-01-01
      • 2019-02-21
      • 1970-01-01
      • 2013-10-05
      相关资源
      最近更新 更多