【问题标题】:How can I locate python2 path within python3 code?如何在 python3 代码中找到 python2 路径?
【发布时间】:2019-05-09 14:49:40
【问题描述】:

我在我的机器上同时使用 python 2 和 python 3。我利用 python 脚本顶部的 she-bang 符号并使用 python 3 附带的新 python 启动器。

我想在 windows 上运行的 python 3 脚本中找到 python.exe 的 python 2 路径。

sys.executable 和类似的命令不起作用,因为它显示了当前运行的 python 的路径。它不会显示另一个版本的 python 的路径。

【问题讨论】:

  • 我正准备给你打勾,但你的答案被删除了?
  • @panofish:它已被删除,因为假设 Python 2 将出现在 PATH 中并不是一个好主意(py.exe 启动器消除了对它的需求,并正确管理 所有系统上的Python版本,而不依赖于PATH)。
  • 我猜你是想 ping @Jean-FrançoisFabre
  • @panofish 你确定你可以使用这个答案而不是 cody 的吗?如果是这样,我会取消删除。如果您正确配置了py,最好使用它
  • Cody 的回答更好,但我喜欢您的代码提供的洞察力。没关系,我有你的答案的副本。谢谢@Jean-FrançoisFabre

标签: python python-3.x windows python-2.7


【解决方案1】:

下面的呢?它利用新的启动器执行python2,并给它一个单行打印sys.executable,所以它是运行它的python2解释器。

import subprocess

print(str(subprocess.run(['py', '-2', '-c', 'import sys;print(sys.executable)'],
               stdout=subprocess.PIPE).stdout, 'utf-8'))

输出:

$ python -V
Python 3.6.5

$ python get_two.py
C:\Python27\python.exe

【讨论】:

  • subprocess.run 在 3.6+ 中有 encodingerrors。请注意,通常从 Windows Python 通过管道传输的标准输出的编码应该是 'mbcs',除非设置了 PYTHONIOENCODING,但在这种情况下它并不重要,因为输出是 ASCII。
  • 完美!谢谢科迪
猜你喜欢
  • 2013-07-13
  • 2021-07-10
  • 2017-10-24
  • 1970-01-01
  • 2017-01-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多