问题
I have created a pyramid application using pcreate, now when I try to run it using pserve with --reload, I get following error
SyntaxError: Non-ASCII character '\x90' in file <path>\pserve.exe on line 1, but no encoding declared; see http://python.org/dev/peps/pep-0263/ for details
Interestingly this error shows up only when I use --reload, if I remove reload it starts fine.
After debugging, I see another file pserve-script.py at the same location of pserve.exe and this python script is internally called by pserve.exe ( I don't understand why? when pserve itself is executable)
The above pserve-script.py has following content and I assume the above error is because of following shebang.
#!c:\<folder-path>\Scripts\python.exe
# EASY-INSTALL-ENTRY-SCRIPT: 'pyramid','console_scripts','pserve'
__requires__ = 'pyramid'
import re
import sys
from pkg_resources import load_entry_point
if __name__ == '__main__':
sys.argv[0] = re.sub(r'(-script\.pyw?|\.exe)?$', '', sys.argv[0])
sys.exit(
load_entry_point('pyramid', 'console_scripts', 'pserve')()
)
回答1:
This is an issue with the way the pserve
reloader is written in Pyramid versions less than 1.8, as far as I know, we (Pyramid developers) haven't figured out a reason why this happens.
In Pyramid 1.8 (which just had an alpha version released) we moved to using hupper
which should work much better under Windows.
Please install it using:
pip install pyramid==1.8a1
And see if the issue disappears!
来源:https://stackoverflow.com/questions/39675750/pyramid-pserve-exe-syntax-error