scrapy 帮助函数在另一个文件中,尝试导入时出现ModuleNotFoundError

mlmc2os5  于 12个月前  发布在  其他
关注(0)|答案(3)|浏览(130)

我有一个使用scrapy的简单Python项目。我的文件结构看起来像这样:

top_level_folder
|-scraper
|--spiders
|---help_functions.py
|---<some more files>
|--items.py
|--pipelines.py
|--settings.py
|--<some more files>

字符串
help_functions.py定义了几个函数,如add_to_items_buffer
在pipelines.py中,我试图做...

from help_functions import add_to_items_buffer

...

class BlahPipeline:
    def process_item(self, item, spider):
       ...
       add_to_items_buffer(item)
       ...


当我尝试运行这个时,我得到ModuleNotFoundError: No module named 'help_functions'。执行from spiders.help_functions import add_to_items_buffer会抛出类似的错误。
这是怎么回事?我想我误解了Python导入工作的一些基本原理。

zed5wv10

zed5wv101#

如果你在top_level_folder/scraper/spiders/help_functions.py文件中有add_to_items_buffer函数,在top_level_folder/scraper/pipelines.py文件中有pipelines.py函数,你需要像这样导入它:

from spiders.help_functions import add_to_items_buffer

字符串

z9zf31ra

z9zf31ra2#

我知道你的help_functions.py文件位于 scraper/spiders
您遇到的错误是因为您直接调用的 * help_functions * 与 * pipelines.py * 不在同一目录级别。
解决方案示例

# old
from help_functions import add_to_items_buffer

# new
from spiders.help_functions import add_to_items_buffer

字符串
无论何时导入文件,都必须引用其路径

qncylg1j

qncylg1j3#

This post为我解释了!这是一个相对导入和绝对导入的问题,取决于你调用的文件所在的位置。

相关问题