PyPI 安装和压缩包中缺少我的包的 requirements.txt 文件
Posted
技术标签:
【中文标题】PyPI 安装和压缩包中缺少我的包的 requirements.txt 文件【英文标题】:requirements.txt file for my package missing from PyPI install and tarball 【发布时间】:2017-09-30 14:10:56 【问题描述】:我按照http://peterdowns.com/posts/first-time-with-pypi.html 的说明将我的 github 托管 python 包添加到 PyPI。但是,当我尝试 pip 安装它并运行我的 setup.py 时,我发现 requirements.txt 文件丢失了。当我从https://github.com/<username>/<mypackage>/archive/0.1.tar.gz
手动下载压缩包文件时,我发现所有文件都在那里。但是,当我单击我的包的 PyPI 页面上的下载链接时,它会下载一个 .tar.gz 存档,其中仅包含 python 文件、配置文件和它似乎已创建的 PKG-INFO 文件。
其他文件都不见了,这是为什么,我该如何解决?
【问题讨论】:
【参考方案1】:setuptools
默认情况下会根据您添加的模块自动选择要包含的文件——默认情况下,这通常意味着您的 python 文件和__init__.py
文件。
要指定需要包含在您的源代码分发中的其他文件,您可以添加一个MANIFEST.in
文件以将其他文件移植到您的源代码分发中。
包含 requirements.txt 的示例:
include requirements.txt
这些可以来sufficiently more complicated
要查找 MANIFEST.in 支持的所有内容,您可以阅读其文档here。
【讨论】:
这似乎有效,因为文件包含在我可以从 PyPI 下载的 .tar.gz 存档中,当我 pip install 模块时,它似乎下载了文件(因为它安装正确并且检查所有要求都在那里)。但是,当我尝试运行我的包时,它会在我的特定情况下在安装目录中查找文件 (/Users/<username>/anaconda/envs/testenv/lib/python3.6/site-packages/datahandling/VERSION
),但找不到该文件。当我自己进入这个目录时,我的清单中的文件(应该在这个子目录中)不存在。
它们看起来至少最初是正确下载的,以便安装包并找到要求。但是安装后它们不在包含包的目录中。
我的 MANIFEST.in 文件如下所示:include requirements.txt include <packagename>/VERSION include LICENSE
VERSION 文件位于 .tar.gz 中,必须下载它才能正确进行安装而不会出现错误,因此在下载包是 pip 安装的。但最终不会复制到安装位置。
如果您希望将其复制到安装位置,您需要查看package_data= -- 也就是说,我认为您的 setup.py 过于复杂 -- 要求通过install_requires
指定应该可以正常工作。至于版本,如果只是在 setup.py 中指定字符串,可以在运行时通过pkg_resources.get_distribution('pkgname').version
访问
我现在可能有点过于复杂了,但我打算很快发布一个包,它需要安装目录中其他编程语言的文件,所以我想先解决它以解决一个更简单的问题。
以上是关于PyPI 安装和压缩包中缺少我的包的 requirements.txt 文件的主要内容,如果未能解决你的问题,请参考以下文章
我可以在不在 pypi 中注册包的情况下制作 pip 可安装包吗?
如何使用 git repos 作为我的 PyPi 包的依赖项?