如何将原始 Python 包上传到 PyPI?
Posted
技术标签:
【中文标题】如何将原始 Python 包上传到 PyPI?【英文标题】:How to upload a pristine Python package to PyPI? 【发布时间】:2010-10-21 05:00:06 【问题描述】:有什么神奇的“python setup.py some_incantation_here
”命令以可以下载的形式将包上传到 PyPI 以获取原始形式的原始包?
我有一个包含一些源代码和一些图像文件的包(如 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 中——在两个地方跟踪其历史记录和文件似乎是浪费工作。
【问题讨论】:
【参考方案1】:当您执行“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 源代码分发中!祝你好运。
【讨论】:
完美! “include nosenotify/*.png” 是我需要的格式,因为我的文件位于子目录中——这种格式确保 .tar.gz nosenotify/ 目录包含它的 .png 文件。 PS Brandon,讽刺的是,在阅读了你的回答后,我去了你的博客,看到了我提出问题前一天的帖子,说你对 setup.py 感到厌烦,以至于你正在制作 pyron。 :)以上是关于如何将原始 Python 包上传到 PyPI?的主要内容,如果未能解决你的问题,请参考以下文章