繁体   English   中英

当用户的系统可能还安装了 Python 2.7 时,如何在用户系统上运行 Python 3 脚本?

[英]How do I run a Python 3 script on a user's system when they may also have Python 2.7 installed?

我正在尝试运行 python 3 个脚本作为 Makefile 目标的一部分,该目标可用于 Linux 或 ZAEA23489CE3AAA9B3000 当系统可能还安装了 Python 2.7 时,调用 Python 3 的正确方法是什么?

看起来:

  • python script.py不起作用,因为在安装了 Python 2.7 的系统上,它指向 2.7 版本。

  • python3 script.py不起作用,因为如果您只安装了 Python 3,它会将 python.exe 命名为python.exe上的可执行文件。

  • py -3 script.py在 Linux 上不起作用,因为py分流器仅存在于 Windows 上。

有没有一个很好的例子来说明如何正确地做到这一点?

仅执行您发现的内容怎么样:

which python3 python | head -1

或者换一种说法,尝试 python3,如果失败回退到 python。

我认为没有一个通用的解决方案可以在没有用户合作的情况下开箱即用。 执行此操作的常用方法是在Makefile中指定合理的默认值并允许用户覆盖它。 也许像

PY3 = python3

py_ver := $(shell $(PY3) -c 'import sys; print(sys.version_info.major)')
ifneq ($(py_ver),3)
  $(error Need PY3 to point to a working Python 3 executable)
endif

# now use $(PY3) wherever you previously used python

现在,您将使用make PY3=/usr/local/bin/python或其他任何方式以不同的二进制路径运行它。

如果您使用 Automake,则有 Python 2 和 Python 3 的内置宏; 另请参见python2 和 python3 的 AM_PATH_PYTHON

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM