Як скласти файл python?


57

Я почав вивчати python, а також я новий користувач Ubuntu. Мені потрібно знати способи складання .pyфайлів. Я спробував з командою

python "hello.py"

Які ще способи складання пітона?

Відповіді:


58

Якщо додати відповідь Брайана, якщо ви просто хочете скласти файл або купу файлів з терміналу, py_compileмодуль може бути виконаний як сценарій наступним чином:

python -m py_compile fileA.py fileB.py fileC.py ...


9
Якщо ви компілюєте через те, що вам потрібна швидкість, ви також можете додати -Oпрапор, як-от python -O -m py_compile …, який "увімкне основні оптимізації". Він здебільшого викреслює assertвисловлювання та if __debug__код, тому для більшості кодів це не впливає. Дивіться man pythonі «Що робить оптимізацію Python ... робити?» Для деталей.
Rory O'Kane

26

Також пам’ятайте, що для його запуску вам не потрібно збирати .pyфайл. Python - це інтерпретована мова, і ви можете запускати сценарії безпосередньо, використовуючи:

python hello.py

Або зробіть свій сценарій виконуваним, додавши #!/usr/bin/env pythonу верхній частині сценарію, зробивши файл виконуваним chmod +x hello.pyта запустивши:

./hello.py

Той факт, що Python внутрішньо компілює ваш .pyсценарій для байт-коду .pycфайлів з міркувань продуктивності, є детальною інформацією про реалізацію, і, якщо у вас немає вагомих причин для цього, нехай python сам вирішує, коли і якщо компілювати.


Я розгублений, чому це працює. Чи не потрібно інтерпретатору Python вміти читати скрипт, щоб запустити його? Якщо ви даєте лише дозвіл на виконання ( chmod +x), як інтерпретатор читає сценарій?
yellow01

@ yellow01: коли ви виконуєте скрипт, який містить "shebang", тобто починається перший рядок #!/path/to/interpreter, ядро ​​фактично виконує все, що там оголошено, передаючи шлях сценарію як аргумент. У моєму прикладі, коли ви запускаєте ./hello.pyте, що насправді виконується /usr/bin/env python ./hello.py. Дивіться en.wikipedia.org/wiki/Shebang_(Unix)
MestreLion,

@ yellow01 ви маєте рацію, що перекладачеві знадобляться дозволи для читання після запуску через процес, який описує MestreLion. Однак chmod +xгранти виконують і не торкаються існуючих дозволів, так що, імовірно, вони читаються на додаток до тепер виконуваного.
спектри

11

Ознайомтесь із цим посиланням Компілювати в Python

У середині сторінки йдеться про модуль py_compile, який можна імпортувати. Синтаксис такий:

import py_compile

py_compile.compile("file.py")

Цей спосіб компіляції не виконає модуль, як запуск python file.py.

Існує також метод, який компілює ціле дерево каталогів, але я дам вам можливість перевірити посилання, щоб побачити, як це виконується.

Сподіваюся, це допомагає.



4

Ви можете компілювати сценарії Python у двійковий код за допомогою різних методів, але я з’ясував, що використання Nuitka є більш ефективним.

Nuitka - компілятор Python-to-C ++, який підтримує майже всі версії python.

Синтаксис команд такий же простий, як і

nuitka hello.py

Перейдіть на http://nuitka.net/doc/user-manual.html для отримання додаткової інформації.


6
Ефективніше як? Чому хтось хотів би ним користуватися?
муру

nuitka дійсно дуже корисна - наприклад, вона дозволяє відправляти програми Python на комп'ютери, де Python не встановлений. Але оскільки nuitka компілює програми Python до машинного коду на C ++, ви можете це обійти.
користувач258532
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.