На самом деле есть способ сделать это в Python 2.3+, но это немного эзотерично. Я не знаю, понимаете ли вы это, но вы можете сделать следующее:
$ unzip -l /tmp/example.zip
Archive: /tmp/example.zip
Length Date Time Name
-------- ---- ---- ----
8467 11-26-02 22:30 jwzthreading.py
-------- -------
8467 1 file
$ ./python
Python 2.3 (#1, Aug 1 2003, 19:54:32)
>>> import sys
>>> sys.path.insert(0, '/tmp/example.zip') # Add .zip file to front of path
>>> import jwzthreading
>>> jwzthreading.__file__
'/tmp/example.zip/jwzthreading.py'
По данным библиотеки zipimport :
В архиве ZIP могут присутствовать любые файлы, но для импорта доступны только файлы .py и .py [co]. Импорт динамических модулей (.pyd, .so) в ZIP запрещен. Обратите внимание, что если архив содержит только файлы .py, Python не будет пытаться изменить архив, добавляя соответствующий файл .pyc или .pyo, что означает, что если архив ZIP не содержит файлов .pyc, импорт может быть довольно медленным.
Таким образом, все, что вам нужно сделать, это заархивировать файлы, добавить zip-файл в ваш sys.path и затем импортировать их.
Если вы создаете это для UNIX, вы можете также рассмотреть возможность упаковки вашего скрипта, используя этот рецепт: unix zip исполняемый файл , но учтите, что вам, возможно, придется настроить это, если вы планируете использовать stdin или чтение что-нибудь из sys.args (это МОЖЕТ быть сделано без особых проблем).
По моему опыту, производительность не сильно страдает из-за этого, но вы должны дважды подумать, прежде чем импортировать очень большие модули таким образом.