【问题标题】:How do I tell what libraries I have succesfully imported in Python and what functions these libraries offer me?我如何知道我在 Python 中成功导入了哪些库以及这些库为我提供了哪些功能?
【发布时间】:2015-11-13 23:47:38
【问题描述】:

我是一个相对较新的 Python 用户。我正在尝试复制教科书中讨论的一系列模块和课程。即使我在复制的代码中导入了 Python 中可用的所有库,我仍然收到很多错误消息,例如:

‘NameError: name <insert name> is not defined’

对我来说,这意味着:

  • 我没有我需要的所有库;
  • 我未能成功导入所有库。

我的问题是:

  1. 当我在 Jupyter 或 IDLE 中时,我如何知道我已成功导入哪些库?

  2. 对于我导入的库,我如何知道哪些函数可供我使用(以便我可以检查给出 NameError 的函数是否在我导入的库中)?

【问题讨论】:

  • 不,这意味着name 没有定义。例如,如果您执行print (steve),您将得到相同的错误,除非您之前已为名为@9​​87654324@ 的对象分配了一些值,它可能与您的库/模块根本没有任何关系。显示您的代码?
  • 这也可能意味着您在定义变量之前正在使用它,但是您始终可以使用交互式 python 并进行导入并查看它们是否有效,并使用 'dir' 函数查看在他们中定义

标签: python libraries


【解决方案1】:

这更有可能意味着 name 未定义,或者您在分配之前引用了名称/变量。

 def foo():
     print(name)

 foo()

上面的代码会引发同样的错误,因为name 是未定义的。

我如何知道我已经成功导入了哪些库?

如果库尚未导入,您将收到导入错误。如果您没有收到任何导入错误,则说明库已成功导入。这是您可以尝试的示例:

import david  #assuming you have no module named 'david'

应该导致:

ImportError: no module named david

我如何知道我可以使用哪些功能

import some_module  # modify as needed
name = 'david'

print name in dir(some_module)  # returns True/False

【讨论】:

  • 那么,print dir(some_module) 会打印出来自some_module 的所有可用名称?
  • 您应该尽量避免提出可以通过反复试验来回答的问题:) 或阅读 dox:docs.python.org/2/library/functions.html#dir
猜你喜欢
  • 2018-11-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-11-27
相关资源
最近更新 更多