【问题标题】:How to set PYTHONPATH in Windows?如何在 Windows 中设置 PYTHONPATH?
【发布时间】:2015-12-25 03:31:33
【问题描述】:

我尝试通过在 Windows 10 的命令提示符下键入 python twitterstream.py > output.txt 来运行 .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

根据我通过 google 搜索看到的情况,解决方案可能是更改 PYTHONPATH 环境变量。但是,我将用户变量和系统变量的 PYTHONPATH 设置为 C:\Python27,但在命令提示符下仍然出现相同的错误

我还阅读了http://bugs.python.org/issue11288,并尝试更改所有最初指向C:\Python27PYTHONPATH 系统变量并将其更改为C:\Python34,但这并没有解决问题

然后我关注了https://docs.python.org/3/using/windows.html#python-launcher-for-windows,但是当我输入py 时,它显示Python 2.7.9 ..,但是对于py -3,我得到一个弹出窗口说python.exe has stopped working

 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

另外,py hello.py 表示 from python 2.7.9 ...,但将 #! python 更改为 #! python3 会出现我之前所说的相同错误

即使我将PATH AND PYTHONPATH 用户变量设置为C:\Python34;C:\Python27;C:\Python27\Scripts;C:\Python34\Scripts,同时将PythonPath 系统变量设置为C:\Python34;C:\Python27;C:\Python27\Scripts;C:\Python34\Scripts,但错误与之前相同

【问题讨论】:

  • 您似乎已将PYTHONHOME 设置为C:\Python27。通常没有理由设置PYTHONPATHPYTHONHOME,而不是使用官方Python 发行版。取消设置这些变量。对于不会导致此类冲突的特定安装,有更好的方法来管理 sys.path
  • 我没有将PYTHONHOME 视为环境变量。当您说未设置时,您的意思是删除它们?当我在PYTHONPATH 上尝试时,我得到了和以前一样的错误
  • 如果我先输入set "PYTHONHOME=C:\Python27",我可以重现错误。这会覆盖 Python 的默认 sys.prefix,通过它可以找到它的标准库。 Python 3 显然不能使用 Python 2 的标准库。在命令提示符中输入set PYTHON。这个列表是PYTHONHOME 还是只是PYTHONPATH?如果只是PYTHONPATH,那么在运行py -3 时应该不会导致该错误。还有其他问题。
  • 当我输入set PYTHON 时,它显示Environment variable PYTHON not defined
  • 这意味着既没有设置PYTHONHOME,也没有设置PYTHONPATH。在该命令提示符中,您是否收到py -3 的错误?

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


【解决方案1】:

由于某种原因,在命令提示符中仅键入“py”文件名对我有用。所以我输入了 myScript.py 并且它运行正确。在此之前,我输入了“python myScript.py”,它产生了与您遇到的相同的错误。我设置了环境变量PYTHONPATH=c:\python27PYTHONHOME=c:\python27。我希望这会有所帮助。

【讨论】:

  • 在 Windows 上,py 是 Python 启动器。这是为 Windows 制作并随 Windows 安装程序一起提供的特定工具,用于查找和使用不同版本的 Python。 Linux 使用 shebangs 来告诉操作系统使用什么程序来运行文件,而 Windows 使用文件扩展名(这就是为什么在 Linux 中你并不总是需要文件扩展名)。在为 Linux 和 Windows 开发代码时,启动器有助于克服可移植性问题(更多信息在 PEP397 中)。只为您输入 python 会执行 C:\python27\python.exe,因为您已将其添加到您的路径中。
【解决方案2】:

在你的程序的开头包含该行

#!/usr/bin/python3

Windows 将使用它在 Python 3.4 而不是 2.7 中运行您的代码

【讨论】:

  • 但即使我在twitterstream.py 上尝试,我也会遇到同样的错误。我也收到了hello.py 的错误,正如我链接到的那个 python 文档页面中所解释的那样
  • 不要将它作为 python twitterstream.py 运行,只需从命令提示符运行 twitterstream.py,它应该启动 python3 而不是默认的 2.7
  • 好的,我不再收到错误消息了。但是,我认为它不能正常工作,因为output.txt 中应该有一些内容,但它仍然是空白的。 twitterstream.py 的代码是 github.com/uwescience/datasci_course_materials/blob/master/…
  • 在没有管道输出到您的文本文件的情况下,您是否获得了正确的输出? Windows 倾向于将输出文件留空,直到进程完成,因此如果需要很长时间,它可能看起来像是失败(尤其是从任务计划运行时)
  • 当我在 Ninja 中运行 twitterstream.py 时,在输出中我看到了一些 HTML 内容,我认为这是正确的输出。但是,output.txt 仍然是空的
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-03-07
  • 1970-01-01
  • 2019-07-19
  • 2020-10-31
  • 2016-06-20
  • 1970-01-01
  • 2012-05-07
相关资源
最近更新 更多