从PyPI安装包时出现问题:未安装根文件
在安装了BitTorrent-bencode这个包之后,可以通过easy_install BitTorrent-bencode
或pip 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 个回答
看起来这个软件包的setup.py文件有问题——它没有正确地定义要分发的软件包。我觉得你需要检查一下源代码里的setup.py,如果真是这样的话,就把这个问题反馈给这个软件包的作者。