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

时间:2017-04-13 19:43:05

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

尝试在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。

enter image description here

有人知道答案吗?

2 个答案:

答案 0 :(得分:1)

将python添加到主PATH变量。

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

将版本#替换为您正在使用的任何内容。另外请查看virtualenv for python。它位于lib下,可以通过PIP安装。

在一台计算机上运行多个版本时,它将为您节省大量时间和头痛,并且非常易于使用!

答案 1 :(得分:1)

问题是你在PYTHONPATH中混合了python 2和3环境。你告诉python 3,从python 2发行版中找到并导入模块是完全没问题的。那会以泪水结束。

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

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

窗口管理器可以通过将文件扩展名与程序相关联来运行该扩展名来添加复杂功能。因此,在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