我有一个使用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导入工作的一些基本原理。
3条答案
按热度按时间zed5wv101#
如果你在
top_level_folder/scraper/spiders/help_functions.py
文件中有add_to_items_buffer
函数,在top_level_folder/scraper/pipelines.py
文件中有pipelines.py
函数,你需要像这样导入它:字符串
z9zf31ra2#
我知道你的
help_functions.py
文件位于 scraper/spiders。您遇到的错误是因为您直接调用的 *
help_functions
* 与 *pipelines.py
* 不在同一目录级别。解决方案示例
字符串
无论何时导入文件,都必须引用其路径
qncylg1j3#
This post为我解释了!这是一个相对导入和绝对导入的问题,取决于你调用的文件所在的位置。