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

Mic*_*ach 10 python packaging pypi

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

我有一个包含一些源和一些图像文件的包(如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中创建一个我刚创建的简单项目 - 在两个地方跟踪其历史和文件似乎是浪费工作.

Bra*_*des 16

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

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

include *.jpg
Run Code Online (Sandbox Code Playgroud)

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

  • PS布兰登,具有讽刺意味的是,在读完你的答案之后,我去了你的博客,在我的问题前一天看到了帖子,说你厌倦了setup.py,你正在制作pyron.:) (2认同)