如何将我自己的模块导入一个scrapy项目?

时间:2019-05-12 18:06:19

标签: python scrapy

我正在尝试编写具有多个管道的抓抓蜘蛛。我选择与蜘蛛属性一起使用的管道。该属性属于我自己编写的枚举类型。现在的问题是在管道类中导入该枚举。每次尝试导入时,都会出现以下错误:

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

1 个答案:

答案 0 :(得分:0)

一种对我有用的替代文件夹结构,同时模块化我的代码是这样的。

./noveldownloader/noveldownloader/ 中创建新文件夹 'data'

那么你就可以这样导入了

from noveldownloader.data import enum_file

然后你可以使用这个函数

enum_file.whatever_function_to_call()