我从别人那里转了一个脚本。并且有一个模块导入到脚本中。我想知道找出哪个pip包安装此库的最佳方法是什么(除了在线搜索)。
我尝试导入包,然后只对它执行help(),但没有得到太多信息。是否有可靠和pythonic的方法来实现这一目标?
例如:
在脚本中有一行
from impala.dbapi import connect
如果不在互联网上搜索,我怎么能发现以下包可以安装这个库?正如您在本案中所看到的,包名称与pip中使用的名称不同。
pip install impyla
答案 0 :(得分:2)
简短的回答:您不能。
原因的根本在于,导入软件包的名称和安装软件包的名称来自不同的命名空间。当您运行import命令时,Python在本地环境中寻找软件包。当您告诉pip安装软件包时,它正在寻找要从PyPI安装的内容(如果您告诉pip去其他地方,则需要其他位置)。
这两个名称总是相同是合理的,但并不能保证。安装是选择要下载和安装的文件集的问题,而导入是选择要运行的已安装文件的问题,但是这些文件的名称在安装过程中不必保持相同。这就是我们像pip install impyla
,import impala
这样的困惑方式。
如果您可以访问该软件包的setup.py
文件,则可以在其中查找名称(如果查看GitHub上的impyla / impala,则会看到name='impyla',
行在对setup
的调用中),但是如果该软件包是通过pip安装的,则您将没有本地的setup.py
文件,因此该选项非常合适。
这不是一个大问题。不能完全保证您可以从本地访问该软件包的代码和该软件包的“真实”导入名称来找到该软件包的PyPI名称。就是说,如果您仍然不熟悉该程序包,则可能仍要在Internet上查找文档和更多信息。我想,还需要查找一件事。