如何搜索包含模块的点子软件包

时间:2019-01-30 19:22:44

标签: python pip

如果您继承了一些带有include的python代码,但是您不知道以前安装了哪些软件包来满足这些include的要求,那么如何搜索要查找的pip软件包包含那个模块?

在这种情况下,我试图找到要安装的pip软件包,以满足:

from django.utils.encoding import smart_str, smart_unicode

通过安装Django,我可以满足smart_str的要求,但是我仍然没有smart_unicode

pip search没有帮助,因为它仅搜索名称与您的搜索匹配的软件包。它不会告诉您哪些软件包包含某些特定模块或其他命名对象,例如smart_unicode。大约有100万个软件包,其名称中的django有所不同。

找出答案一次后,我将其写入requirements.txt文件中,以防止将来使用此特定的python文件出现此问题。

如何搜索包含模块的pip包?

2 个答案:

答案 0 :(得分:1)

您最有可能使用的是Python 3和Django2。您继承的代码很可能是为同时支持Python 2的Django版本(可能是1.XX版本)编写的,但是它们未能提供正确的权限django版本是必需的。因此,在执行pip install时,您必须明确指定django 1.xx的特定版本,以便使用类似pip install django=1.11的东西。

下面是从一个django 1.11代码,我不得不方便

的快速片断

if six.PY3:
    smart_str = smart_text
    force_str = force_text
else:
    smart_str = smart_bytes
    force_str = force_bytes
    # backwards compatibility for Python 2
    smart_unicode = smart_text
    force_unicode = force_text

所以更换所有出现的smart_unicode在你的代码smart_text将使它的工作,并使其稍稍未来证明(AT-至少是一部分)。

从长远来看,请考虑使用Python 3和受支持的Django版本。

答案 1 :(得分:0)

此功能存在于Django中,但是您必须使用Python 2或将应用程序移植到现代Python和现代Django。