【发布时间】:2011-05-31 21:52:14
【问题描述】:
如果 zip 文件在 zip 存档的顶部包含 __main__.py 文件,Python 2.6 及更高版本可以直接执行 .zip 文件。我想利用这个特性来提供我正在开发的工具的预览版本,除了将 .zip 文件复制到他们的磁盘之外,它不需要用户安装任何东西。是否有创建此类 zip 文件的标准方法?我正在寻找适用于 python 2.6 和 python 2.7 的解决方案。
理想情况下,我想使用 distutils,因为当我想进行正常安装时,它已经可以工作了。有没有一种规范的方式来使用(或扩展)distutils 来创建这样的 .zip 文件?
distutils 提供了一个sdist 命令,它创建了一个几乎正确的源分布,但创建的结构有点太深了。
例如,我的源代码树如下所示:
my_package/
- setup.py
- src/
- __main__.py
- module1/
- module2/
- module3/
当我执行python setup.py sdist 时,我最终会得到一个具有以下结构的 .zip 文件:
my_package-0.1.zip
- my_package-0.1/
- README.txt
- PKG_INFO
- src/
- __main__.py
- module1/
- module2/
- module3/
这是不可执行的,因为__main__.py 不在分发的顶部。实际上,我想要的是一个不包含src,而只包含src 下的文件的src 发行版。那个,或者正是 sdist 给我的,但在存档顶部有一个额外的 __main__.py。
【问题讨论】:
标签: python distutils python-2.6