2015-11-18 3 views
4

На данной встроенной машине Linux у меня установлен дистрибутив Python 3.3, который по умолчанию имеет параметр оптимизации -O. Это имеет следующие эффекты:Отключить базовую оптимизацию Python (-O)

  • .pyo файлов генерируются (а не .pyc)
  • assert заявление не имеет никакого эффекта
  • __debug__ установлен в False
  • Некоторые Иды, кажется, не в состоянии обеспечить удаленная отладка (см. WingIDE)

Есть ли способ отключить базовую оптимизацию в командной строке? Я попытался установить PYTHONOPTIMIZE на пустую строку, но это не имеет никакого эффекта.

+0

В качестве обходного пути вы можете установить собственный питон. –

+0

Это странно, потому что я не мог найти такой вариант в скрипте configure для Python 3.3. Вы тщательно проверяли среду с помощью 'env' или' printenv', и не делали ли вы, что вы не используете оболочку, которая заставляет параметр -O? –

+0

Я только что нашел патч, который применяется к источнику Python3.3.3, чтобы активировать оптимизацию по умолчанию. Распределение основано на Yocto, и оно поставляется с этим патчем. – frans

ответ

2

распределения Питона я использую поставляется с Yocto и базовая оптимизация активируется там по умолчанию (Py_OptimizeFlag закодирована 1, а не 0).

Эта версия Python также поставляется с дополнительным флагом -N (который не задокументирован в обычных дистрибутивах Python).

Таким образом, ответ на мой вопрос заключается в том, чтобы либо установить параметр командной строки -N, либо применить патч к источникам Python, которые поставляются с Yocto и перекомпилировать (как предлагает Karoly Horvath).

Смежные вопросы