Есть ли способ запустить скрипт Python, который находится внутри zip-файла из Bash?

Я знаю, что есть способ импортировать модули, которые находятся в zip-файле с Python. Я создал своего рода библиотеку пакетов Python в ZIP-файле.

Я хотел бы также поместить в этот пакет мой скрипт "task", который использует библиотеку. Затем, используя bash, я бы хотел вызвать нужный скрипт в zip-файле, не распаковывая zip-файл.

Цель состоит в том, чтобы иметь только один почтовый индекс для перемещения в указанной папке, когда я хочу запустить свои скрипты.

Ответы на вопрос(2)

Решение Вопроса

Я наконец нашел способ сделать это. Если я создаю zip-файл, я должен создать__main__.py в корне почтового индекса. Таким образом, можно запустить скрипт внутри main и вызвать if from bash с помощью следующей команды:

python myArchive.zip

Эта команда запустит__main__.py файл! :)

Тогда я могу создать.command файл для запуска скрипта с правильными параметрами.

Вы также можете поместить некоторый код в__main__.py файл, чтобы дать вам больше гибкости, если вам нужно передать аргументы, например.

например:python __main__.py buildProject

Справочная документация здесь:https://docs.python.org/2/library/runpy.html

 Rod21 сент. 2010 г., 20:53
Отлично. Я думал, что вы хотите произвольно назвать «любой» скрипт в вашем zip-архиве.
 Hyunjun Kim12 июл. 2018 г., 04:13
я нашел этостраница интернета, Вы также можете запускать сценарии без__main__.py как это:PYTHONPATH=/path/to/myArchive.zip python -m [filename without extension] [args]
 ForceMagic21 сент. 2010 г., 21:58
В основном это то, что я хотел, но без разархивирования файла. Так что это единственный способ сделать это.
 Ivan17 авг. 2019 г., 14:19
Обратите внимание, что в zip-архиве можно запустить любой скрипт, то есть__main__.py файл не обязательно должен быть в корне zip-файла:python /path/to/z.zip/path/within/zip, Это может быть использовано, например, для непосредственного запуска кода в файле wheel (который является zip):python /path/to/wheel1.whl/module1, Кроме того, zip-файлы всегда ведут себя как каталоги, так что это можно проверить без zip:python /path/to/any/directory будет работать__main__.py внутри данного каталога.

Посмотри наZipimport, Должно работать прямо с установки. Возможно, вам придется проделать некоторую работу, чтобы заставить pythonpath указывать на ваш zip-файл / каталог.

Этот модуль добавляет возможность импорта модулей Python (* .py, * .py [co]) и пакетов из архивов в формате ZIP. Обычно не требуется явно использовать модуль zipimport; он автоматически используется встроенным механизмом импорта для элементов sys.path, которые являются путями к ZIP-архивам. Это пути к ZIP-архивам.

 Martin Dorey27 сент. 2018 г., 01:14
Contra @Rod, выше, комментарий @ HyunjunKim к ответу @ ForceMagic, который заслуживает того, чтобы быть ответом сам по себе, отлично работал для меня со скриптом, одним из многих в zip, который использует__name__ == "__main__" идиома.
 ForceMagic21 сент. 2010 г., 17:20
Хорошо, большое спасибо! Вместо этого я попытаюсь найти что-то для создания приложения, как с моими файлами Python. Потому что в текущей ситуации у меня должен быть только один файл, по которому мои пользователи могут щелкнуть, и скрипт будет работать с его модулями. Я думал о py2app, потому что я на Mac.
 ForceMagic21 сент. 2010 г., 16:34
Я имел в виду запуск скрипта python внутри zip с командой bash, чтобы создать файл .command, который запускает нужный скрипт. Может быть, это невозможно без питона?
 ForceMagic21 сент. 2010 г., 17:42
Лучшая ссылка, которую я нашел для создания приложения с помощью скрипта Python:stackoverflow.com/questions/2933/an-executable-python-app
 Rod21 сент. 2010 г., 17:11
Я не знаю ничего, что могло бы вызвать скрипт непосредственно внутри zip-архива. К сожалению, вы должны полагаться на Python для чтения сценариев Python, который мешает вам использоватьглавный == "главный"идиома.

Ваш ответ на вопрос