无法将Scrapy Spider导入脚本

brvekthn  于 2022-11-23  发布在  其他
关注(0)|答案(1)|浏览(170)

除了spider/src.py中的classSomeSpider导入到main/main.py之外,我所有的导入都可以正常工作。当我在终端中调用scrapy crawl somespider时,spider本身会运行。python不能识别scrapy.spider中的modules吗?
我的文件结构:

/whiskers
-/venv
--/bin
--/include
--/lib
--/whiskers
---/whiskers
----/main
-----/main.py
----/spiders
-----/__init__.py
-----/src.py
----/__init__.py
----/items.py
----/middlewares.py
----/pipelines.py
----/settings.py
---/scrapy.cfg
--/pyvenv.cfg

将以下任意一项放入main/main.py

from whiskers.spiders.src import SomeSpider
   
(or) 

from whiskers.whiskers.spiders.src import SomeSpider

(or) 

from whiskers.venv.whiskers.whiskers.spiders.src import SomeSpider

给出错误:

ModuleNotFoundError: No module named 'whiskers'

尝试以下任一操作:

from ..spiders.src import SomeSpider

(or)

from .. import LawSpider

给出错误:

ImportError: attempted relative import with no known parent package

spider/src.py中,spider本身就是一个名为SomeSpider的基本scrapy.Spider

class SomeSpider(scrapy.Spider):
lxkprmvk

lxkprmvk1#

把你的main.py脚本放在一个包文件夹之外。包文件夹是一个包含__init__.py的文件夹。Guido货车Rossum的想法是,脚本--__name__ == '__main__'所在的起始点和模块A A不应该驻留在包的 * 内部 *,而是 * 外部 *。包应该只包含导入到脚本或其他包中的库代码。
在这种情况下,最简单的方法是将www.example.commain.py上移两级:

whiskers/
  venv/
    bin/
    include/
    lib/
    whiskers/
      main.py  <-- put it here
      whiskers/
        __init__.py
        spiders/
          __init__.py
          src.py
        items.py
        middlewares.py
        pipelines.py
        settings.py
      scrapy.cfg
    pyvenv.cfg

然后在main.py做from whiskers.spiders.src import SomeSpider

相关问题