如何将原始Python包上传到PyPI?

时间:2009-04-22 20:10:04

标签: python packaging pypi

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

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

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

警告:我正在努力避免存储我刚刚在SVN仓库和PyPI中创建的简单项目 - 在两个地方跟踪其历史记录和文件似乎是浪费工作。

1 个答案:

答案 0 :(得分:16)

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

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

include *.jpg

当然,我想象你的“图像文件”是实际图片而不是磁盘图像或ISO图像或其他东西;如果我猜错了你可能需要调整上面的行!但请查看distutils文档的Specifying which files to distribute部分,看看您是否无法将这些文件显示在.tar.gz源代码分发中!祝你好运。