使用来自导入另一个自定义模块的自定义模块的函数时出现 ModuleNotFoundError

时间:2021-01-09 14:03:59

标签: python python-3.x module runtime-error python-import

我有一个与此类似的文件夹结构(我的示例包含所有必要的部分):

web-scraper/
    scraper.py
    modules/
        __init__.py
        config.py
        website_one_scraper.py

其中 config.py 只是存储一些全局变量。有点像:

global var1
var1 = "This is a test!"

website_one_scraper.py 中,它看起来像这样:

import config

def test_function():
    # Do some web stuff...
    return = len(config.var1)

if __name__ == "__main__":
    print(test_function)

scraper.py 看起来像这样:

from module import website_one_scraper

print(website_one_scraper.test_function())

website_scraper_one.py 单独运行时工作正常,因此运行 if __name__ == "__main__" 下的代码。但是,当我运行 scraper.py 时,出现错误:

ModuleNotFoundError: No module named 'config'

这是完整的错误和回溯(尽管名称不同,因为我为上面的示例更改了一些名称):

Traceback (most recent call last):
File "c:\Users\User\Documents\Programming\Work\intrack-web-scraper\satellite_scraper.py", line 3, in 
<module>
from modules import planet4589
File "c:\Users\User\Documents\Programming\Work\intrack-web-scraper\modules\planet4589.py", line 5, in 
<module>
import config
ModuleNotFoundError: No module named 'config'

另请注意,在 scraper.py 中,我尝试将 from modules import website_one_scraper 替换为 import website_one_scraperfrom .modules import website_one_scraperfrom . import website_one_scraper,但它们都不起作用。

我的错误可能是什么原因?这可能与我导入所有内容的方式有关吗?

(我使用的是 Python 3.9.1)

1 个答案:

答案 0 :(得分:1)

在您的 website_scraper_one.py 中,尝试使用 import config.py 代替 from . import config

说明

  • 。是当前包还是当前文件夹
  • config 是要导入的模块