【问题标题】:requirements.txt file for my package missing from PyPI install and tarballPyPI 安装和压缩包中缺少我的包的 requirements.txt 文件
【发布时间】: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 文件。

其他文件都不见了,这是为什么,我该如何解决?

【问题讨论】:

    标签: python git github pip pypi


    【解决方案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 访问
    • 我现在可能有点过于复杂了,但我打算很快发布一个包,它需要安装目录中其他编程语言的文件,所以我想先解决它以解决一个更简单的问题。
    猜你喜欢
    • 2020-03-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-24
    • 2023-01-12
    相关资源
    最近更新 更多