我正在学习如何从目录中导入库,我偶然发现了一个我似乎无法理解的错误。我在一个名为lib的文件夹中使用imdbpython库。下面,我导入的模块不再返回任何错误,但是当我移到第6行时,我得到以下错误:
Traceback (most recent call last):
File "testlib.py", line 4, in <module>
from lib.imdb import IMDb
File "/home/user/Scripts/test/lib/imdb/__init__.py", line 49, in <module>
import imdb._logging
ImportError: No module named 'imdb'
Python抛出了一个错误,因为我正在编写的Python测试文件位于两个目录之上。不知道如何在不将所有内容都放在同一目录下的情况下工作。在
^{pr2}$
如上所述,导入对象和导入函数是不同的。 导入
imdb
之类的模块时,可以使用它的函数。但是,导入函数时,只能使用该函数,而不能使用它来自的对象/模块。在请检查以下内容以获得更好的示例:Python 3 modules
你可以写下:
或者:
^{pr2}$但是导入
IMDb
然后调用imdb.IMDb()
是行不通的。在还有一点要提:如果你的测试库.py位于
lib
foder之上,然后您需要在lib
中添加一个__init__.py
文件,以便导入工作。文件可以完全为空。在更新:此包使用的import语句不是相对于包文件夹的,而是相对于
sys.path
中的任意文件夹的。这正是导致错误的一条直线:只有当包位于
sys.path
的一部分的文件夹中时,此方法才有效,因此要么位于执行from imdb import IMDb
语句的脚本相同的路径中,要么位于python dist包路径中(简化解释)。这种和所有同等的进口商品可以用在这种情况下,导入是相对于模块的,因此imdbpy包不需要驻留在
sys.path
中的目录中。在现在的结果是,我们不能简单地将imdb放在子文件夹中,我们需要将它放在
sys.path
的文件夹中,或者将它所在的文件夹添加到sys.path
。所以,选择是:写下:
在import语句之前。
在上述任何情况下,您将能够:
相关问题 更多 >
编程相关推荐