Я начал изучать Python, и я также новый пользователь Ubuntu. Мне нужно знать способы компиляции .py
файлов. Я пробовал с командой
python "hello.py"
Каковы другие способы компиляции Python?
Я начал изучать Python, и я также новый пользователь Ubuntu. Мне нужно знать способы компиляции .py
файлов. Я пробовал с командой
python "hello.py"
Каковы другие способы компиляции Python?
Ответы:
Также имейте в виду, что вам не нужно компилировать .py
файл для его запуска. Python является интерпретируемым языком, и вы можете запускать сценарии напрямую, используя:
python hello.py
Или сделайте ваш скрипт исполняемым, добавив #!/usr/bin/env python
его в начало скрипта, сделав файл исполняемым chmod +x hello.py
и запустив:
./hello.py
Тот факт, что Python внутренне компилирует ваш .py
скрипт в .pyc
файлы байт-кода по соображениям производительности, является деталью реализации, и, если у вас нет веских причин для этого, пусть Python сам решает, когда и если компилировать.
chmod +x
), как интерпретатор читает сценарий?
#!/path/to/interpreter
, ядро фактически выполняет все, что там объявлено, передавая путь скрипта в качестве аргумента. В моем примере, когда вы запускаете ./hello.py
то, что на самом деле выполняется /usr/bin/env python ./hello.py
. См.
chmod +x
гранты выполняются, и не затрагивают существующие разрешения, так что, по-видимому, они доступны для чтения в дополнение к тому, что теперь они исполняемые.
Проверьте эту ссылку Компиляция в Python
В середине страницы рассказывается о модуле py_compile, который можно импортировать. Синтаксис выглядит следующим образом:
import py_compile
py_compile.compile("file.py")
Этот метод компиляции не будет запускать модуль так же, как и запуск файла python file.py.
Существует также метод, который компилирует все дерево каталогов, но я позволю вам проверить ссылку, чтобы увидеть, как это выполняется.
Надеюсь это поможет.
Вы также можете попробовать compileall
:
python -m compileall ./
Вы можете компилировать скрипты Python в двоичный код, используя различные методы, но я обнаружил, что использование Nuitka более эффективно.
Nuitka - это компилятор Python-to-C ++, который поддерживает практически все версии python.
Синтаксис команды так же прост, как
nuitka hello.py
Перейти к http://nuitka.net/doc/user-manual.html для получения дополнительной информации.
-O
флаг, напримерpython -O -m py_compile …
, который «включит базовую оптимизацию». В основном он удаляетassert
операторы иif __debug__
код, поэтому для большинства кода это не имеет никакого эффекта. Смотритеman python
и «Что делает оптимизацию Python ... делать?» Для деталей.