2016-12-07 15 views
7

Вопрос: Как я могу решить ошибку символа no-ascii, выполняющую pserve на virtualenv в окнах?Не-ASCII-символ ' x90', выполняющий pserve на окнах внутри virtualenv

Описание: Я пытаюсь выполнить pserve (pyllons/pyramid web-сервер разработки) внутри virtualenv на окнах. Это новая установка, поэтому, возможно, она связана с версиями.

Проблема: С 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. Путь к исполняемому файлу does't содержит специальные символы.

Тесты сделаны:

  1. Удалить ех расширения с pserve. Не работал: не распознано сообщение команды.
  2. Вызов pserve-script.py вместо pserve (полный путь тоже пытался). Не работал: ничего не делал и ничего не возвращал.
  3. Добавлено «- * - encoding: utf-8» в начале pserve-script.py. Это же сообщение.
  4. Удалить exe extenstion из python.exe (полный путь тоже пытался). Не работал: «не удалось создать процесс».

Окружающая среда:

  • Окна 10 1607 сборки 14393,447
  • Python версии: Anaconda2, Python 2.7.11
  • Пирамида версия: пирамида 1.7.3
  • Virtual окр: 15,1 .0

РЕШЕНИЕ:

Устранение и установка снова решила проблему для меня.

+1

Вы забыли задать вопрос. – IInspectable

+1

Пожалуйста, укажите точный код или командную строку, которую вы используете для запуска pserve. Это похоже на то, что Python пытается запустить .exe, как если бы это был скрипт Python. – RichVel

+0

@RichVel, Добавлено в вопрос. –

ответ

0

вместо encoding Я просто использую coding (и, похоже, -*- не требуется).Почти каждый питон-скрипт я написал начинается с:

#coding: utf-8 

Я использую Python 2.7.10 на Windows 10

+0

проблема такая же. #coding: utf-8. Проблема не в скрипте, а в попытке выполнить pserve exe. –

0

Я действительно не имею ответа здесь, как я не использую либо пирамиду или Окна. Однако это было замечено несколькими людьми и может быть связано с тем, что python.exe используется для выполнения pserve.exe, что не будет работать, поскольку это исполняемый файл, а не программа Python.

Вот некоторые ссылки, которые могут двигаться это вперед - рекомендуем вам присоединиться к группе Google, как это имеет более концентрированный опыт Pyramid:

Одна конкретная идея состоит в том, чтобы убедиться, что у вас есть файл pserve.py, а не pserve.exe и что вы используете python pserve.py для его запуска. Если вызывающий скрипт имеет ограничения, создайте пакетный файл run-pserve.bat для вызова Python и протестируйте его за пределами вызывающего сценария.

В качестве альтернативы, вы можете использовать предварительно сконфигурированную Linux-виртуальную машину в Windows. Или в Windows 10 есть хороший «Bash for Windows» aka Windows Subsystem for Linux, который действительно полный Linux Ubuntu. Я бы подумал, что любой из них сделает его очень легким для развития, чем Windows.

+0

Я уже использую bash для windows, но я хочу интегрировать pycharm или vscode с virtualenv (утилитой python) в Windows. Я также использую WSL для выполнения своих сценариев, но нет чистого способа сделать интеграцию с WSL (удаленная связь не чистая, я искал). Используемые виртуальные машины в прошлом тоже, но это не то, что я ищу. Кроме того, этот псих должен ДЕЙСТВИТЕЛЬНО работать без проблем с virtualenv. –

+0

Предполагая, что «pserve» действительно является скриптом Python, попробуйте 'python pserve development.ini --reload' - если это работает, поместите его в файл' run-pserve.bat'. Чтобы проверить правильность настройки virtualenv, вы также можете использовать '/ path/to/my/venv/bin/python pserve development.ini --reload', который заставляет использовать virtualenv, даже если env vars и т. Д. Неправильны. – RichVel

+0

Я тоже пробовал полный путь, @RichVel. Отредактировал вопрос, чтобы отразить это. Кроме того, pserve-script.py - это просто оболочка для вызова pserve.exe. Пробовал как абсолютный, так и относительный вызов обоих файлов (exe и py). –

0

Если предположить, что virtualenv сидит в venv каталоге

Используйте это:

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