从 PyPI 安装软件包时出现问题:未安装根文件
Posted
技术标签:
【中文标题】从 PyPI 安装软件包时出现问题:未安装根文件【英文标题】:Problems installing a package from PyPI: root files not installed 【发布时间】:2011-02-27 03:27:28 【问题描述】:通过easy_install BitTorrent-bencode
或pip install BitTorrent-bencode
安装BitTorrent-bencode 包后,或者通过下载压缩包并通过easy_install $tarball
安装,我发现/usr/local/lib/python2.6/dist-packages/BitTorrent_bencode-5.0.8-py2.6.egg/
包含EGG-INFO/
和test/
目录。尽管这两个子目录都包含文件,但BitTorr*
目录本身没有文件。 tarball 确实包含bencode.py
,它是这个包的实际来源,但它没有被这两个工具安装。
我对这一切都很陌生,所以我不确定这是包裹的问题还是我正在做的事情。该软件包是在不久前(2007 年)打包的,因此它可能使用了一些已弃用的配置方面,我需要为其提供命令行标志。
我更感兴趣的是了解包或我的程序出了什么问题,而不是安装这个特定的包;还有另一个名为hunnyb 的包似乎在解码编码数据方面做得相当不错。大多数情况下,我想知道如何处理其他包中的此类问题。我还想让包维护者知道包是否需要更新。
编辑
@Andrey Popp 解释说问题可能与 setup.py 文件有关。我想我能真正回答我的问题的唯一方法是通过 R-ing TFM。不过,由于我可能暂时没有时间彻底完成这项工作,因此我已经发布了 setup.py 文件 here。
快速浏览the easy_install manual 会发现该模块的 setup.py 使用的函数 find_modules() 在包中搜索名为 __init__.py
的文件。有问题的源代码文件名为bencode.py
,所以也许这就是问题所在:它应该命名为__init__.py
?
编辑 2
现在已经学习了 Python 打包,我认为问题在于该模块正在使用 setuptools.find_packages
,并且其源代码位于其目录结构的根目录中,但在 package_dir
中没有传递任何内容。修复它似乎相当简单。但是,无法通过他的 PyPI 联系信息联系到作者。该模块的 PyPI 页面也列出了“包索引所有者”。我不确定这应该是什么意思,但我确实设法与那个人取得了联系,我认为他可能无法维护该模块。无论如何,它仍然处于与我在 6 月份发布此问题时相同的状态。
鉴于该模块似乎或多或少被遗弃,并且在hunnyb 中有合适的替代品,我已经接受@andreypopp 的答案与我将得到的一样好。
【问题讨论】:
【参考方案1】:这个包的 setup.py 似乎坏了——它没有定义正确的分发包。我认为,您需要在源代码版本中检查 setup.py,如果它是真的 - 向这个包的作者报告错误。
【讨论】:
酷...但是我应该寻找什么?setup.py
中唯一看起来不像元数据或不相关配置的行是 packages = find_packages()
。这正常吗?抱歉,我真的对此一无所知,学习 python 打包是我暂时不打算做的事情。无论如何,我已将 setup.py 粘贴到 gist.github.com/424729 以节省人们下载/解压缩的麻烦打包检查一下。以上是关于从 PyPI 安装软件包时出现问题:未安装根文件的主要内容,如果未能解决你的问题,请参考以下文章