Ответ 1
Модуль py_compile предоставляет функцию для генерации файла байтового кода из исходного файла и другую функцию, используемую, когда источник модуля файл вызывается как script.
python -m py_compile fileA.py fileB.py fileC.py
Есть ли способ скомпилировать файл Python.py из командной строки без, выполнив его?
Я работаю с приложением, которое хранит свои расширения python в нестандартном пути с ограниченными разрешениями, и я хотел бы скомпилировать файлы во время установки. Мне не нужны накладные расходы Distutils.
Модуль py_compile предоставляет функцию для генерации файла байтового кода из исходного файла и другую функцию, используемую, когда источник модуля файл вызывается как script.
python -m py_compile fileA.py fileB.py fileC.py
Да, есть модуль compileall:
http://docs.python.org/library/compileall.html#module-compileall
Вот пример, который компилирует все файлы .py
в каталог (но не подкаталоги)
python -m compileall -l myDirectory
Фактически, если вы работаете в Linux, у вас может быть команда /usr/bin/py_compilefiles
в вашем PATH. Он обертывает модуль py_compile, упомянутый другими людьми. Если вы не в Linux, здесь script code.
$ python -c "import py_compile; py_compile.compile('yourfile.py')"
или
$ python -c "import py_compile; py_compile.compileall('dir')"
Я бы сказал что-то вроде этого, поэтому вы можете скомпилировать его в выбранное вами местоположение:
import py_compile
py_compile(filename+".py",wantedlocation+wantedname+".pyc")
Как я уже сделал в своем проекте Python на github.com/lolexorg/Lolex-Tools
В дополнение к выбору местоположения вывода pyc (by @Jensen Taylor answer), вы также можете указать имя исходного файла, которое вам нравится для трассировки, если вы не хотите, чтобы абсолютный путь файла py был записан в pyc:
python -c "import py_compile; py_compile.compile('src.py', 'dest.pyc', 'whatever_you_like')"
Хотя "compileall -d destdir" может сделать трюк, он иногда ограничивает ваш рабочий каталог. Например, если вы хотите, чтобы имя исходного файла в pyc было "./src.py", вам нужно переместить рабочий каталог в папку src.py, которая в некоторых случаях нежелательна, затем запустите что-то вроде "python -m compileall -d./."