在virtualenv的窗口中执行pserve的非ASCII字符'\ x90'

问题:如何解决在windows上执行virtualenv中的no-ascii字符错误?

描述:我正试图在windows的virtualenv里执行pserve(pyllons / pyramid development web server)。 这是一个全新的安装,所以也许它与版本有关。

问题:激活virtualenv后,执行pserve config.ini throw error: 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 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 

笔记:

  1. 如果文件中的字符与当前文件编码不匹配,则会发生此错误,因此您可以添加一条指令,以便在python脚本中设置正确的enconde。
  2. 如果被调用的目标在某些情况下具有exe扩展名,并且调用它的脚本将exe添加到最后,则可能会发生这种情况。 所以,python运行时会抛出这个错误,导致一个exe文件不能作为一个脚本调用,而只是调用没有sufix添加。
  3. 可执行文件的path不包含特殊字符。

testing完成:

  1. 从pserve中删除exe扩展名。 没有工作:不能识别的命令信息。
  2. 调用pserve-script.py而不是pserve(完整path也试过)。 没有工作:什么也不做,什么都不返回。
  3. 在pserve-script.py的开头增加了“ – * – encoding:utf-8”。 同样的信息。
  4. 从python.exe中删除EXE扩展(完整path也试过)。 没有工作:“未能创build过程”。

环境:

  • Windows 10 1607 build 14393.447
  • Python版本:Anaconda2,Python 2.7.11
  • 金字塔版本:金字塔1.7.3
  • 虚拟环境:15.1.0

解:

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

而不是encoding我只是使用coding (似乎不需要-*- )。 几乎所有我写的python脚本都是从下面开始的:

 #coding: utf-8 

我在Windows 10上使用Python 2.7.10

我没有真正的答案,因为我不使用金字塔或Windows。 但是,这已经被少数人看到了,可能是由于python.exe被用来执行pserve.exe ,因为这不是可执行文件而不是Python程序。

这里有一些链接可能会推动这一进展 – 建议您加入Google集团,因为它有更集中的金字塔专业知识:

  • 金字塔pserve.exe语法错误

  • Google网上论坛线程

  • 谷歌搜索

一个具体的想法是确保你有一个pserve.py文件而不是pserve.exe ,并且你使用python pserve.py来运行它。 如果调用脚本有限制,请创建一个run-pserve.bat批处理文件来调用Python并在调用脚本之外对其进行测试。

或者,您可能希望在Windows上使用预配置的Linux VM。 或者在Windows 10上,有一个很好的“Windows的Bash”,也就是Linux的Windows子系统,这真的是一个完整的Ubuntu Linux。 这两者中的任何一个都会比Windows更容易开发,我想。

假设你的virtualenv坐在venv目录下

用这个:

 python venv/Lib/site-packages/pyramid/scripts/pserve.py some-ini-config.ini --reload