NonASCII字符'\x90'在virtualen中的windows上执行pserve

2024-04-29 09:44:20 发布

您现在位置:Python中文网/ 问答频道 /正文

问题:如何解决在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

注意事项:

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

测试完成:

  1. 从pserve中删除exe扩展名。无效:无法识别命令消息。在
  2. 呼叫服务-脚本.py而是pserve(也尝试了完整路径)。不起作用:什么都不做,什么也不回报。在
  3. 在pserve开始处添加“-*-编码:utf-8”-脚本.py. 同样的信息。在
  4. 从中删除exe扩展python.exe(也尝试了完整路径)。无效:“未能创建进程”。在

环境:

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

解决方案:

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


Tags: 文件py路径版本脚本编码virtualenvwindows
3条回答

我在这里没有答案,因为我既不用金字塔也不用窗户。但是,这种情况以前也有人见过,这可能是由于python.exe被用来执行pserve.exe,因为这是一个可执行文件而不是Python程序。在

以下是一些可能推动这一进程的链接-建议您加入谷歌集团,因为它拥有更为集中的金字塔专业知识:

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

或者,您可能希望在Windows上使用预配置的linuxvm。或者在Windows10上有一个很好的“bashforwindows”又名Windows Subsystem for Linux这真是一个完整的ubuntulinux。我认为,这两种方法中的任何一种都会使开发比Windows容易得多。在

假设您的virtualenv位于venv目录中

使用这个:

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

此错误消息附带一个建议,它显示

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

最大胆的部分是建议所在。这个PEP非常直接,解决方案就是为源文件定义一个编码。 你很有可能

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

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

根据字符集设置编码。utf-8应该适用于大多数情况,或者您可能需要其他编码。在

相关问题 更多 >