【问题标题】:Why do python and py commands run different python 3 versions? [duplicate]为什么 python 和 py 命令运行不同的 python 3 版本? [复制]
【发布时间】:2018-02-12 02:19:30
【问题描述】:

我已经使用pip 命令(pip install Django)安装了django,但我无法使用py 命令运行它,因为它找不到模块。 我只能使用“python”命令使其工作。

这是我附上的截图摘要

$ python --version
Python 3.6.1
$ py --version
Python 3.6.0

看起来 django 只适用于 3.6.1。

有什么方法可以设置这两个命令来运行最新版本的python?

截图:

【问题讨论】:

  • 你的操作系统是什么?
  • 输入 which pythonwhich py 并发布您的结果。我发现在我的windows pc 上,这些命令来自不同的 python 安装。像 django 这样的包是特定于 python 安装或虚拟环境的。
  • 1. @Evan - Win10Pro 64 位 2. @surfer190 - 这些 which pythonwhich py 命令在我的提示符中未被识别为命令
  • 尝试where (Windows) 而不是which (Linux)。
  • 可能是3.6.1安装的是32位,3.6.0安装的是64位。对于给定的 major.minor 版本,启动器更喜欢 64 位构建而不是 32 位构建。此处忽略微版本号(即major.minor.micro)。

标签: python django windows python-3.x


【解决方案1】:

当您执行py 时,您正在使用Python launcher for Windows。您可以使用此命令具体说明您希望py 执行哪个 Python 解释器版本:

> py -3.6

请参阅 PEP 397 中的此部分: Python Version Qualifiers

如果在命令中找不到版本限定符,则环境 变量PY_PYTHON可以设置指定默认版本限定符 - 默认值为“2”。请注意,此值可以仅指定主要版本(例如“2”)或major.minor 限定符(例如“2.6”),甚至 major.minor-32.

如果没有找到次要版本限定符,则环境变量 PY_PYTHON{major}(其中{major} 是当前主要版本限定符 如上确定)可以设置为指定完整版本。如果不 找到这样的选项,启动器将枚举已安装的 Python 版本并使用为主要版本找到的最新次要版本, 尽管不能保证,这很可能是最近的 该系列中已安装的版本。

除了环境变量,同样的设置也可以 在启动器使用的 .INI 文件中配置。中的部分 INI 文件被称为 [defaults] 并且键名将与 没有前导 PY_ prefix 的环境变量(请注意 INI 文件中的键名不区分大小写。) 环境变量将覆盖 INI 中指定的内容 文件。

Plus Python 启动器不仅限于启动不同的 Python 版本,它还解析源代码文件中的 shebang #!,提供类似于 Windows 中 *nix 操作系统的功能。

*请参阅Python Launcher for Windows 文档。

【讨论】:

  • @eryksun 感谢您提供信息。我包含了对您提供的文档页面的引用。
【解决方案2】:

在 Windows 上,py 是存储在 C:\Windows 文件夹中的可执行文件。老实说,我不知道它包含什么,因为我习惯了它是 linux 上的符号链接,我的 windows 安装显示正常的 python 可执行文件是 py 大小的一小部分,尽管我很确定它们指向同一个安装。无论如何,您可以通过从 Windows 文件夹中删除或重命名(python.bak 等)您不想继续使用的可执行文件,然后复制您想要的文件并将其重命名为与您相同的名称来解决您的问题以前删除或重命名。我无法想象这是解决此问题的官方方法,但这会起作用。此外,将来,如果您想确定您正在使用哪个安装,而不是仅仅运行指向 pip 的任何点,请随时使用 pip 明确指定您要安装的版本:

py -m pip install packagename
python -m pip install packagename

在同一系统上遇到多个 python 版本的问题在 Windows 中很常见,因此设置虚拟环境可能是有益的。这在Django Windows install how-to 中有解释。

【讨论】:

  • python.exe 不在 Windows 文件夹中,不应删除或重​​命名任何内容。这只是 py.exe 喜欢哪个版本的问题,例如64 位 3.6 优于 32 位 3.6 与 OP 在PATH 中的版本。无需采取如此激烈的措施,问题就可以得到解决。
猜你喜欢
  • 2016-04-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-06-07
  • 2020-01-21
  • 2020-10-15
  • 1970-01-01
相关资源
最近更新 更多