如何使源控制的pip包满足其他包的要求

时间:2013-10-22 19:16:44

标签: python version-control pip pkg-resources

从存储库安装软件包时,pip freeze会生成该软件包的存储库路径,而不是软件包名称/版本。例如:

-e git+https://github.com/ryneeverett/Python-Markdown.git@11f0b010395a86eac93db0816bcf984639b839e9#egg=Markdown-master

当另一个应用程序需要这样的包时,它似乎无法识别。例如:

$ hyde gen
Traceback (most recent call last):
  File "/home/ryne/.virtualenvs/DEV/bin/hyde", line 5, in <module>
    from pkg_resources import load_entry_point
  File "build/bdist.linux-x86_64/egg/pkg_resources.py", line 2675, in <module>
    def extras(self):
  File "build/bdist.linux-x86_64/egg/pkg_resources.py", line 552, in resolve
    if item not in self.entry_keys:
pkg_resources.DistributionNotFound: Markdown==2.3.1

如何避免此类问题?

1 个答案:

答案 0 :(得分:0)

我无法确认这是否会解决我的古老问题,但是(通过pip的源代码查看)我很确定问题是什么:

我是从git安装的,因为我想要最新的开发版本以及我的修改。海德(一个很少维护的第三方软件包)固定了降价版本,这几乎肯定是落后的几个版本。所以问题是我的fork的setup.py中指定的降价版本实际上不是2.3.1。

引用我自己对another question的回答:

  

Pip决定是否仅根据版本号(在setup.py中)满足要求。