[英]Unable to import Scrapy Spider into Script
除了將class
SomeSpider 從spider/src.py
SomeSpider
main/main.py
之外,我所有的導入都在工作。 當我在終端中調用scrapy crawl somespider
時,蜘蛛本身就會運行。 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
中,蜘蛛本身只是一個基本的scrapy.Spider
名為SomeSpider
:
class SomeSpider(scrapy.Spider):
將main.py
腳本放在 package 文件夾之外。 package 文件夾是包含__init__.py
的文件夾。 Guido van Rossum 對此的想法是,腳本 - __name__ == '__main__'
的起點、模塊 - 不應位於包內,而應位於包外。 包應僅包含導入到腳本或其他包中的庫代碼。
在這種情況下,最簡單的方法是將 main.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
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.