除了spider/src.py
中的class
SomeSpider
导入到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):
1条答案
按热度按时间lxkprmvk1#
把你的
main.py
脚本放在一个包文件夹之外。包文件夹是一个包含__init__.py
的文件夹。Guido货车Rossum的想法是,脚本--__name__ == '__main__'
所在的起始点和模块A A不应该驻留在包的 * 内部 *,而是 * 外部 *。包应该只包含导入到脚本或其他包中的库代码。在这种情况下,最简单的方法是将www.example.commain.py上移两级:
然后在main.py做
from whiskers.spiders.src import SomeSpider
。