Python:如何找到库所属的pip包?

时间:2016-03-04 00:42:53

标签: python pip

我从别人那里转了一个脚本。并且有一个模块导入到脚本中。我想知道找出哪个pip包安装此库的最佳方法是什么(除了在线搜索)。

我尝试导入包,然后只对它执行help(),但没有得到太多信息。是否有可靠和pythonic的方法来实现这一目标?

例如:

在脚本中有一行

from impala.dbapi import connect

如果不在互联网上搜索,我怎么能发现以下包可以安装这个库?正如您在本案中所看到的,包名称与pip中使用的名称不同。

pip install impyla

1 个答案:

答案 0 :(得分:2)

简短的回答:您不能。

原因的根本在于,导入软件包的名称和安装软件包的名称来自不同的命名空间。当您运行import命令时,Python在本地环境中寻找软件包。当您告诉pip安装软件包时,它正在寻找要从PyPI安装的内容(如果您告诉pip去其他地方,则需要其他位置)。

这两个名称总是相同是合理的,但并不能保证。安装是选择要下载和安装的文件集的问题,而导入是选择要运行的已安装文件的问题,但是这些文件的名称在安装过程中不必保持相同。这就是我们像pip install impylaimport impala这样的困惑方式。

如果您可以访问该软件包的setup.py文件,则可以在其中查找名称(如果查看GitHub上的impyla / impala,则会看到name='impyla',行在对setup的调用中),但是如果该软件包是通过pip安装的,则您将没有本地的setup.py文件,因此该选项非常合适。

这不是一个大问题。不能完全保证您可以从本地访问该软件包的代码和该软件包的“真实”导入名称来找到该软件包的PyPI名称。就是说,如果您仍然不熟悉该程序包,则可能仍要在Internet上查找文档和更多信息。我想,还需要查找一件事。