gpt4 book ai didi

python - 如何导入Python模块

转载 作者:行者123 更新时间:2023-12-01 02:17:33 24 4
gpt4 key购买 nike

我正在学习如何从目录导入库,并且偶然发现了一个我似乎无法弄清楚的错误。我在名为 lib 的文件夹中使用 IMDBpy python 库。下面,我导入的模块不再返回任何错误,但是当我移至第 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 测试文件位于 2 个目录之上。不知道如何在不将所有内容都放在同一目录中的情况下使其工作。

#!/usr/bin/env python3

from lib.imdb import IMDb

# Create the object that will be used to access the IMDb's database.
ia = imdb.IMDb() # by default access the web.

最佳答案

您可以写:

from lib.imdb import IMDb

ia = IMDb()

或者:

from lib import imdb

ia = imdb.IMDb()

但是导入 IMDb 然后调用 imdb.IMDb() 不起作用。

还有一点需要提及:如果您的 teSTLib.py 位于 lib foder 之上,那么您需要添加一个 __init__.py lib 中的文件以便导入工作。该文件可以完全为空。

<小时/>

更新:此包使用的导入语句与包文件夹无关,而是相对于 sys.path 中的任意文件夹。导致错误的确切行就是对此的说明:

# imdb.__init__.py
imdb._logging

只有当包驻留在 sys.path 的文件夹中时,此方法才有效,因此要么与执行 from imdb import IMDb 的脚本位于同一路径中 语句或在 python dist-package 路径中(简化解释)。这个和所有等效的导入可以替换为

# imdb.__init__.py
from . import _logging

在这种情况下,导入是相对于模块的,因此 imdbpy 包不需要驻留在 sys.path 的目录中。

现在对我们来说,我们不能简单地将 imdb 放入子文件夹中,我们需要将其放入 sys.path 中的文件夹中,或者将其所在的文件夹添加到 sys.path。因此,选项是:

  • 安装软件包
  • 将 imdb 文件夹上移到当前文件夹
  • 写:

    import sys
    sys.path.insert(0, 'absolute/path/to/lib')

    在导入语句之前。

在上述任何一种情况下,您都可以执行以下操作:

from imdb import IMDb
ia = IMDb()

关于python - 如何导入Python模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48254890/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com