在 cmd 中使用命令 'python3' 引发致命 Python 错误

Throws Fatal Python error using command 'python3' in cmd

尝试在 win10 上使用 python3。

这是我尝试使用时得到的结果:

> python3 myscript.py

Fatal Python error: Py_Initialize: unable to load the file system codec
      File "C:\Python27\Lib\encodings\__init__.py", line 123
        raise CodecRegistryError,\
                                ^
    SyntaxError: invalid syntax

Current thread 0x00001e44 (most recent call first):

可能的问题,我的系统上也有 2.7。 使用命令 pypython 有效。他们 运行 python 2.7 脚本没有问题。

我已将我的文件夹添加到 PYTHONPATH。

有人知道答案吗?

将 python 添加到主 PATH 变量。

C:\Python35;C:\Python35\Lib\site-packages\;C:\Python35\Scripts\

将版本 # 替换为您正在使用的版本。也请查看 python 的 virtualenv。它在 libs 下,可以通过 PIP 安装。

当 运行 在一台计算机上安装多个版本时,它会为您节省很多时间和麻烦,而且超级好用!

问题是您在 PYTHONPATH 中混合了 python 2 和 3 环境。您告诉 python 3 从 python 2 发行版中查找和导入模块非常好。那将以泪水告终。

Python 在您 运行 时已经知道它的标准安装目录。这涵盖了 stdlib 和您明确安装的任何模块(例如,通过 pip)。 PYTHONPATH 只需要你没有安装但只是复制到某处的东西。

PYTHONPATH(通常)对 scripts 目录或 python.exe 本身没有用。脚本和 .exe 需要由操作系统找到,而不是 python,因此需要在 PATH 上。

Window 管理人员可以通过将文件扩展名与程序关联到 运行 该扩展名来增加复杂性。因此,在 Windows 中,您必须通过单击桌面来选择是否 python 2 或 3 个脚本 运行 可用。 Python 安装程序通过创建知道调用哪个 python 的包装器来尝试变得聪明。

在 windows 上安装后,您可能希望将脚本和 .exe 目录添加到您的路径中。您可以对 python 2 和 3 都这样做……但有一点问题。如果您在 python 2 和 3 中有同名脚本,则路径中的第一个脚本优先。

我认为您可以完全删除 PYTHONPATH 并确保它们在 PATH 中。我的 windows python 安装与您的稍有不同,因此我无法通过测试来确定。

C:\Python27
C:\Python27\Scripts
C:\Python36
C:\Python36\Scripts