【问题标题】:can't copy 'ANIFEST.in': doesn't exist or not a regular file无法复制“ANIFEST.in”:不存在或不是常规文件
【发布时间】:2014-12-10 19:08:25
【问题描述】:

注意:截至 2015 年 9 月 4 日,我无法再使用当前版本的 python 和 setuptools/distutils 在 python 2 或3.


注意:我自己已经回答了这个问题,一旦系统允许我就会接受这个答案,但这似乎是唯一的英语参考互联网上的问题(根据谷歌),所以我想我会发布两个希望这可以有用。


我在安装我自己的 python 包时遇到了一个无法调试的问题。这是一个非常简单的包,具有平面结构(没有子目录),以及一些我需要在安装时复制的数据文件。为简洁起见,删除了一些内容,我有这个:

spherical_functions
├── MANIFEST.in
├── __init__.py
├── spherical_functions.py
├── ladder_operator_coefficients.npy
└── setup.py

从我的源目录安装时,我没有问题。但是当我切换到setuptools 或安装pip (分发所需)时,我得到了错误

can't copy 'ANIFEST.in': doesn't exist or not a regular file

请注意该文件名开头缺少的M。我稍微侵入了distutils,以验证它实际上是在尝试复制ANIFEST.in,而不仅仅是误报名称。不幸的是,线索到此为止,因为其余的 setuptools 代码隐藏在我不明白的一些鸡蛋中。

在没有MANIFEST.in 文件的情况下也会出现类似的问题,只使用setup 函数的package_data 选项,它会丢失数据文件的第一个字母,如

error: can't copy 'adder_operator_coefficients.npy': doesn't exist or not a regular file

【问题讨论】:

  • 即使您的回答表明您找到了适合您的解决方案,我想请您针对setuptools/distutils 提交一个关于错误/错误反馈的错误错误消息(根本没有意义,并且在多个方面令人困惑),因为您已经查看了代码。如果你不想,我也可以这样做,但我必须做你已经做过的工作。你怎么看?
  • 我无法再使用 python 2 或 3(作为环境安装在 anaconda 中)重现此问题。根据我最初的问题,我首先尝试使用 MWE;然后我将我的回购回滚到我第一次问这个问题之前的状态。这些组合都没有给我带来问题,所以我想它已经解决了。如果你能重现错误,当然,你应该提交一个错误报告。

标签: pip setuptools distutils


【解决方案1】:

this thread 的提示下,我意识到我犯了错误;我并不真正了解setup.pysetup 函数的所有选项。我有

package_dir={'spherical_functions': ''},

我应该有的时候

package_dir={'spherical_functions': '.'},

(注意多余的点。)包含这个之后,它似乎工作得很好。

我可能会建议生成的行为在任何情况下都是错误的,这表明 setuptools 和/或 distutils 中存在错误。或者至少可以进行检查以确保用户没有像我那样做一些愚蠢的事情......

【讨论】:

    【解决方案2】:

    请注意,您可以将py_modules 关键字用于setup(),如果您愿意,它应该只是要安装的模块(文件)名称的列表。这是最简单的 Python 发行版。

    setup(...
          py_modules=['spherical_functions'],
          ...)
    

    以这种方式,在安装您的发行版后,您可以简单地运行from spherical_functions import <a_member_inside_that_file>

    【讨论】:

    • 这对我的文件根本不起作用;如果我包含这样一行,我只会得到file spherical_functions.py (for module spherical_functions) not found,而构建过程没有其他变化。如果我只包含那一行,我会得到no Python modules to install。我可能遗漏了一些重要的细节,但基本上我看不出没有packages=['spherical_functions']package_dir={'spherical_functions': '.'} 的任何安装方法。
    猜你喜欢
    • 2021-02-24
    • 1970-01-01
    • 2022-07-05
    • 2021-09-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-29
    • 2015-05-19
    相关资源
    最近更新 更多