scrapy Python导入错误:'无法导入名称'

eqqqjvef  于 2022-11-09  发布在  Python
关注(0)|答案(5)|浏览(271)

我在导入python模块上的类时遇到了麻烦。
下面是我的目录结构:

_wikiSpider
  +scrapy.cfg
  _wikiSpider
    +__init__.py
    +items.py
    +items.pyc
    +settings.py
    +settings.pyc
    +pipelines.py
    _spiders
     +__init__.py
     +__init__.pyc
     +articleSpider.py
     +articleSpider.pyc
     +items.py

在此行的代码中断:

from wikiSpider.items import Article

我不知道为什么,因为类Article定义在items.py(最深的文件夹)
谁能给予我个解释?

vql8enpb

vql8enpb1#

像其他人一样,我没有循环引用的问题,我想在这里概括一下解决方案。
任何文件名冲突都可能导致此问题。您可以有多个同名的子文件(如上所述)。
也可能是您正在处理的文件。
例如:trello.py作为宠物项目。从trello导入TrelloApi
导入引用将在导入pip安装包之前导入自身。尝试直接导入trello和引用对象将失败,并显示“NameError:名称“"未定义”

axkjgtzd

axkjgtzd2#

您的items.py根文件夹和_spider文件夹中都有www.example.com。要引用子文件夹中的文件,您需要文件夹名称和文件。
from _spider.items导入文章
假设导入这段代码的文件在你的根目录下,Python使用你在这里的位置到当前文件的位置,作为它的目录层次结构。

yyhrrdl8

yyhrrdl83#

最佳解决方案:
1.使用临时名称重命名类名
1.在__init__.py的import语句中放置相同的临时名称
1.既然管用了,就把你的旧名字再放一遍

mjqavswn

mjqavswn4#

from main wikiSpider directive try:

from _wikiSpider._spiders.items import Article 

orelse from terminal open your _spiders directive and try:

from items import Article

在这里,我们要打开items.py创建Article类的www.example.com文件,因此,当您给予了一些错误的指令或文件时,它无法找到您创建的items.py文件,因此它显示“无法导入错误”

z9gpfhce

z9gpfhce5#

对我有效的方法是删除__pycache__文件夹。我移动类文件并向上更改目录层次结构,该高速缓存肯定有旧的名称/位置。删除它并再次运行我的程序,创建了一个新的缓存,错误不再存在。

相关问题