从PyPI安装包时出现问题:未安装根文件

4 投票
1 回答
620 浏览
提问于 2025-04-15 23:29

在安装了BitTorrent-bencode这个包之后,可以通过easy_install BitTorrent-bencodepip install BitTorrent-bencode来安装,或者下载压缩包后用easy_install $tarball安装。我发现/usr/local/lib/python2.6/dist-packages/BitTorrent_bencode-5.0.8-py2.6.egg/目录下有EGG-INFO/test/这两个文件夹。虽然这两个子文件夹里有文件,但BitTorr*目录里没有任何文件。压缩包里有一个bencode.py文件,这个文件是这个包的实际源代码,但用以上工具安装时并没有安装这个文件。

我对这些东西还很陌生,所以不太确定这是包的问题还是我操作的问题。这个包是很久之前打包的(2007年),所以可能使用了一些过时的配置,需要我在命令行中加个参数。

我更想知道这个包或者我的操作哪里出了问题,而不是单纯想把这个包安装好;还有一个叫hunnyb的包,似乎能很好地解码bencoded数据。主要我想知道在处理其他包时如何应对类似的问题。我也想让这个包的维护者知道,是否需要更新这个包。

编辑

@Andrey Popp解释说,问题可能出在setup.py文件上。我想我想要的答案,可能得通过认真阅读TFM来找到。不过因为我可能暂时没有时间深入研究,所以我把setup.py文件放在这里了。

快速浏览一下easy_install手册,发现这个模块的setup.py使用的find_modules()函数,会在包里寻找名为__init__.py的文件。相关的源代码文件叫bencode.py,所以也许这就是问题所在:它应该叫__init__.py吗?

编辑 2

现在我了解了一些Python打包的知识,我认为问题在于这个模块使用了setuptools.find_packages,而它的源代码在目录结构的根部,但没有在package_dir里传递任何东西。看起来这个问题修复起来相对简单。不过,作者通过PyPI的联系信息无法联系到。这个模块的PyPI页面上也列出了一个“包索引所有者”。我不太确定这是什么意思,但我确实联系到了那个人,我觉得他可能不在维护这个模块的状态。无论如何,自从我在六月发布这个问题以来,它的状态没有变化。

鉴于这个模块似乎基本上被遗弃了,而且有一个合适的替代品在hunnyb,我接受了@andreypopp的回答,觉得这大概是我能得到的最好答案。

1 个回答

1

看起来这个软件包的setup.py文件有问题——它没有正确地定义要分发的软件包。我觉得你需要检查一下源代码里的setup.py,如果真是这样的话,就把这个问题反馈给这个软件包的作者。

撰写回答