我正在尝试编写具有多个管道的抓抓蜘蛛。我选择与蜘蛛属性一起使用的管道。该属性属于我自己编写的枚举类型。现在的问题是在管道类中导入该枚举。每次尝试导入时,都会出现以下错误:
from data.file_types import FileTypes
builtins.ModuleNotFoundError: No module named 'data'
我已经尝试了各种变体来放置枚举类,并在相对和绝对导入之间切换。如果我将enum类放置在独立于scrapy包的独立包中,那么如果直接运行管道文件,则可以导入并使用enum,但是如果我想在外壳上运行Spider,仍然会收到错误消息。
我当前的项目结构是:
noveldownloader:
data
enum_file.py
__init__.py
novelscraper
novelscraper
pipelines
spiders
etc
__init__.py
scrapy.cfg
我当前的导入是:
from data.file_types import FileTypes
如果有帮助,我将代码上传到GitHub: https://github.com/JustACodingFox/NovelDownloader
答案 0 :(得分:0)
一种对我有用的替代文件夹结构,同时模块化我的代码是这样的。
在 ./noveldownloader/noveldownloader/
中创建新文件夹 'data'
那么你就可以这样导入了
from noveldownloader.data import enum_file
然后你可以使用这个函数
enum_file.whatever_function_to_call()