Как запустить файл .pyc, когда он импортирует некоторые другие файлы .py?

main.py

import other

def main():
   other.test()

main()

другое.py

def test():
   print("Hello")

Используя python3 -m py_compile *.py, я могу иметь 2 файла .pyc.

Однако main.pyc нельзя запустить, если есть no module named other, что является ошибкой, которую я получил от терминала.

Идея состоит в том, чтобы скомпилировать весь проект от .py до .pyc, чтобы люди могли запускать их, не делясь исходным кодом.

Итак, как запустить этот main.pyc, который импортирует другие библиотеки, не делясь исходным кодом?


person idontknoooo    schedule 17.10.2017    source источник
comment
Вы пытались выполнить other.pyc напрямую?   -  person georgexsh    schedule 17.10.2017
comment
На самом деле, я пытался. Но как вы думаете, произойдет ли что-нибудь, если в этом файле .pyc не будет вызова функции? Пожалуйста, взгляните на файл other.py выше. Даже если он преобразуется в .pyc, внутри него все равно нет вызова функции. @georgexsh   -  person idontknoooo    schedule 17.10.2017
comment
это работает для меня, какова ваша среда?   -  person georgexsh    schedule 17.10.2017
comment
Я использую Ubuntu LTS с python3. Позвольте мне перефразировать. Я могу успешно запустить other.pyc, но ничего не произойдет, так как внутри него нет вызова функции. Моя цель — запустить файл main.pyc, который содержит вызовы функций из других файлов. Вы можете это сделать? @georgexsh   -  person idontknoooo    schedule 17.10.2017


Ответы (2)


— спросила группа по машинному обучению. Вот что я нашел. Пока main.py и other.py скомпилированы в main.pyc и other.pyc, я могу запустить их с помощью python3 main.pyc.

До этого мой питон автоматически преобразовывал other.py в other.cpython-35.pyc. В данном случае main.pyc не может import other так как в папке нет other (теперь она называется other.cpython-35).

Таким образом, убедитесь, что файл .pyc имеет то же имя, что и .py, а затем вы можете запустить любой из них, и python включит для вас файл .pyc при выполнении команды.

person idontknoooo    schedule 18.10.2017

Это также может быть достигнуто с помощью этой команды:

python -m compileall -b .

person Berci    schedule 15.04.2020