10

将包上传到 PyPI的神奇“ python setup.py some_incantation_here”命令是什么,可以下载以获取原始包的原始格式?

我有一个包含一些源代码和一些图像文件(如 package_data)的包。如果我执行“ setup.py sdist register upload”,则 .tar.gz 会排除图像文件。如果我这样做“ setup.py bdist_egg register upload”,则鸡蛋包含图像但不包括 setup.py 文件。我希望能够上传一个文件,这只是我的整个项目——也就是“ setup.py the_whole_freaking_thing register upload”。

也许最好的方法是手动 tar.gz 我的项目目录并使用 PyPI Web 界面上传它?

警告:我试图避免将我刚刚创建的简单项目存储在我的 SVN 存储库和 PyPI 中——在两个地方跟踪其历史和文件似乎是浪费工作。

4

1 回答 1

16

当您执行“sdist”命令时,控制包含文件列表的是位于“setup.py”旁边的“MANIFEST.in”文件,而不是“package_data”中列出的任何内容。这与当今 Python 打包解决方案的精神分裂性质有关。“sdist”由标准库中的distutils提供支持,而“bdist_egg”由setuptools模块控制。

要解决此问题,请尝试在 setup.py 文件旁边创建一个 MANIFEST.in,并为其提供如下内容:

include *.jpg

当然,我认为您的“映像文件”是实际图片,而不是磁盘映像或 ISO 映像或其他东西;如果我猜错了,您可能需要调整上面的行!但是请查看 distutils 文档的指定要分发的文件部分,看看您是否无法让这些文件出现在您的 .tar.gz 源代码分发中!祝你好运。

于 2009-04-23T00:15:17.020 回答