2010-05-08 2 views
2

Есть ли способ сделать вывод py2exe .py исходных файлов вместо байт-скомпилированных .pyc файлов в библиотеке?Создание файла py2exe `.py`

+0

У вас уже есть .py файлы - они вводятся в py2exe. Поскольку у вас уже есть .py файлы, чего вы пытаетесь достичь? –

+0

Вместо того чтобы иметь py2exe вывод '.pyc' в библиотеке, я хочу, чтобы он выводил файлы' .py'. Это так, что мне будет легче отлаживать. –

+2

-1: У вас уже есть .py файлы. Это не имеет никакого смысла. Комментарий не помогает. Попробуйте уточнить вопрос с некоторым рациональным объяснением того, почему вы хотите .py-файлы *, когда у вас уже есть .py-файлы *. –

ответ

1

Я сделал это давно, так что я надеюсь, что я правильно помню:

  • Набор прессуют Ложные, так py2exe не будет создавать файл библиотеки Zip'd.
  • Установите оптимизацию до нуля, поэтому py2exe напишет файлы pyc.

UPDATE: Ram Rachum правильно, используйте skip_archive вариант вместо compressed.

Вы не сможете изменить основной файл Python, так как он будет встроен в основной исполняемый файл, поэтому сохраните его до минимума. Затем вы сможете заменить файлы pyc вашими py файлами вручную в своем дистрибутиве по мере необходимости. Однако нет причин заменять стандартные библиотеки, но только ваш собственный код.

(Это не является оптимальным для отладки, но я предполагаю, что вы хотите, чтобы исправить некоторые проблемы происходит только релиз сборки вашего программного обеспечения таким образом.)

Пожалуйста, дайте мне знать, если он не работает, и я Я постараюсь помочь.

UPDATE:

Я просто прочитать соответствующие части исходного кода py2exe. Кажется, что py2exe не поддерживает его из коробки. Таким образом, мы ушли с возможностью касаться исходного кода.

Вы можете легко изменить py2exe для поддержки этого режима. См. Функцию byte_compile в build_exe.py. В нем есть встроенная функция compile, которую вы можете заменить на copy_file. Не забудьте изменить имя файла назначения (dfile), чтобы иметь расширение .py вместо .pyc или .pyo. Я знаю, что это пэчворк, но я не вижу другой возможности решить вашу проблему.

Вы также можете добавить новую опцию py2exe или ввести для нее значение optimize, если вам интересно. На самом деле это был бы открытый вклад в py2exe. ;)

+0

Я уже могу вручную заменить их файлами py. (Кроме того, я делаю 'skip_archive', чтобы иметь папку вместо zip-файла.) Я просто хочу, чтобы py2exe не попытался быть таким умным; Мне жаль, что он просто скопирует исходное содержимое пакета для каждого пакета в библиотеку. От него компилируется '.py', он также пропускает некоторые файлы данных для некоторых научных пакетов, например. –

+0

Вы можете перечислить файлы данных, пропущенные 'py2exe' явно в опции' data_files'. См. Также: http://py2exe.org/index.cgi/data_files – fviktor

+0

См. Мое обновление выше. Я надеюсь, что это помогает. – fviktor

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