问题:我如何解决在Windows中在virtualenv上执行pserve的无ascii字符错误?

说明:我正在尝试在Windows上的virtualenv中执行pserve(pyllons/Pyramid 开发Web服务器)。这是全新安装,因此可能与版本有关。

问题:在激活virtualenv的情况下,执行pserve config.ini引发错误:SyntaxError: Non-ASCII character '\x90' in file C:\PATH_TO_MY_ENV_HOME\env\Scripts\pserve.exe on line 1, but no encoding declared; see http://python.org/dev/peps/pep-0263/ for details

命令行:

pserve development.ini --reload

注意:
  • 当您的文件的字符与当前文件的编码不匹配时,会发生此错误,因此您可以在python脚本的开头添加一条指令来设置正确的编码。
  • 如果在某些情况下被调用目标具有exe扩展名,并且调用该脚本的脚本将exe添加到末尾,则可能发生这种情况。因此,python运行时抛出此错误,因为不得将exe文件作为脚本调用,而应在不添加sufix的情况下调用它。
  • 可执行文件的路径不包含特殊字符。

  • 已完成测试:
  • 从pserve删除exe扩展名。无效:无法识别命令消息。
  • 调用pserve-script.py代替pserve(也尝试了完整路径)。没用:什么也不做,什么也不返回。
  • 在pserve-script.py的开头添加了“-*-编码:utf-8”。相同的消息。
  • 从python.exe中删除exe扩展名(也尝试了完整路径)。没用:“创建过程失败”。

  • 环境:
  • Windows 10 1607内部版本14393.447
  • Python版本:Anaconda2,Python 2.7.11
  • Pyramid 版本: Pyramid 1.7.3
  • 虚拟环境:15.1.0

  • 解决方案:

    卸载并重新安装解决了我的问题。

    最佳答案

    我实际上没有答案,因为我既不使用Pyramid也不使用Windows。但是,这已经被少数人看到过,这可能是由于python.exe被用于执行pserve.exe,它不能工作,因为它是可执行文件而不是Python程序。

    以下是一些可能会插入这一趋势的链接-建议您加入Google网上论坛,因为它在 Pyramid 方面的专业知识更加集中:

  • Pyramid pserve.exe syntax error
  • Google Groups thread
  • Google search

  • 一个特定的想法是确保您拥有一个pserve.py文件而不是pserve.exe,并确保您使用python pserve.py运行该文件。如果调用脚本有限制,请创建一个run-pserve.bat批处理文件以调用Python并在调用脚本之外对其进行测试。

    或者,您可能想在Windows上使用预先配置的Linux VM。或者在Windows 10上有一个很好的“Windows的Bash”(又名Windows Subsystem for Linux),它实际上是完整的Ubuntu Linux。我认为,这两种方法都比Windows更易于开发。

    09-27 11:06