我正在将 python 嵌入到我正在创建的应用程序中,并且我正在寻找一种方便的方法来分发 python 代码。我最近阅读zipimport
并认为这将是一种方便的方式来分发我的所有 python 代码,而不是包括完全扩展的树。所以,我设置我的包类似于这个:
.
├── setup.py
└── testpack
├── __init__.py
└── pack1
├── foo.py
└── __init__.py
setup.py
看起来像:
from distutils.core import setup
setup(
name='testpack',
author='FatalError',
version='1.0',
packages=['testpack.pack1']
)
然后我跑了python setup.py bdist --format=zip
。但是当我查看 zip 的内容时:
$ unzip -l testpack-1.0.linux-x86_64.zip
Archive: testpack-1.0.linux-x86_64.zip
Length Date Time Name
--------- ---------- ----- ----
183 2013-03-13 10:47 usr/local/lib/python2.7/dist-packages/testpack-1.0.egg-info
152 2013-03-13 10:47 usr/local/lib/python2.7/dist-packages/testpack/pack1/__init__.pyc
181 2013-03-13 10:47 usr/local/lib/python2.7/dist-packages/testpack/pack1/foo.pyc
0 2013-03-13 10:41 usr/local/lib/python2.7/dist-packages/testpack/pack1/__init__.py
33 2013-03-13 10:41 usr/local/lib/python2.7/dist-packages/testpack/pack1/foo.py
--------- -------
549 5 files
显然,结果(并不奇怪)不适合与zipimport
. 相反,这是一个 zip 存档,旨在解压缩/
以安装软件包。
有没有办法让distutils
(或setuptools
等)来构建包,以便它可以使用zipimport
?由于我拥有的代码确实是特定于应用程序的,因此它不属于安装到系统库中。
我意识到我可以自己编写脚本,但是,那有什么乐趣呢?例如,我想确保所有内容都已预编译,并且我的包包含一个不打算分发的单元测试包。所以,我希望这些工具之一可以为我做这件事。