非ASCII字符'\ x90'在virtualenv

时间:2016-12-07 23:07:46

标签: python windows virtualenv pyramid

问题:如何解决在windows中执行pude on virtualenv时出现的无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

注意:

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

    1. 从pserve中删除exe扩展名。没用:没有识别出命令信息。
    2. 调用pserve-script.py而不是pserve(也试过完整路径)。没有工作:什么都不做,什么都不回报。
    3. 在pserve-script.py的开头添加了“ - * - encoding:utf-8”。同样的消息。
    4. 从python.exe中删除exe扩展(尝试完整路径)。没有奏效:“未能创造过程”。
    5. 环境:

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

      SOLUTION:

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

3 个答案:

答案 0 :(得分:0)

我在这里没有答案,因为我不使用金字塔或Windows。但是,之前有一些人已经看到过这种情况,可能是由于python.exe被用来执行pserve.exe,这将无法执行,因为它不是Python程序的可执行文件。

以下是一些可能推动此进展的链接 - 建议您加入Google群组,因为它拥有更集中的金字塔专业知识:

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

或者,您可能希望在Windows上使用预配置的Linux VM。或者在Windows 10上有一个很好的'Bash for Windows'又名Windows Subsystem for Linux,它真的是一个完整的Ubuntu Linux。我认为,这些都可以使开发变得比Windows更容易。

答案 1 :(得分:0)

假设您的virtualenv位于venv目录

使用此:

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

答案 2 :(得分:0)

此错误消息带有建议,内容为

SyntaxError:/path/to/file行上文件#lineno中的非ASCII字符'\ x90',但未声明编码; 有关详细信息,请参见http://python.org/dev/peps/pep-0263/

粗体字是建议所在的地方。该PEP非常简单,解决方案是为源文件定义编码。 您最有可能拥有

#!/usr/bin/env python
# coding=utf-8

解释器行是可选的,但是如果您具有解释器行,则可以第二次定义编码,否则,请先定义

根据字符集设置编码。 utf-8在大多数情况下都可以使用,或者您可能需要其他编码。