如果您继承了一些带有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包?
答案 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。