Scrapy ImportError: No module named items

2817 단어 crawler

1. 문제 설명


scrapy crawl 명령을 실행하여 데이터를 추출할 때 코드에서 다음 오류가 발생했습니다.
ImportError: No module named items

그러나 분명히 우리 코드 안에는items와 같은 종류가 있다.그 문제는 어디에 나타날까요?만능의 Stack overflow에게 도움을 청하니 마침 이 문제가 언급되었다.

2. 문제 발생 원인


간단하게 말하자면 파충류의 이름은 프로젝트의 이름과 같아서 최종적으로 가져올 때 오류가 발생한다.

3. 솔루션


stackoverflow가 준 방안에는 세 가지가 있다.항목 이름 바꾸기 2.파충류의 명칭을 바꾸다.파충류의 코드에 넣기from __future__ import absolute_import앞의 두 가지 방안은 모두 프로젝트의 이름과 파충류의 이름이 일치하지 않도록 하기 위한 것이고, 뒤의 방안은 import의 방식을 바꾸기 위한 것이다.

4.absolute_import 요약

from __future__ import absolute_import

이 import은 모든 가져오기를 절대 가져오기로 간주하는 것이 아니라, implicit relative import (은밀한 상대 가져오기) 를 사용하지 않지만,explicit relative import (상대 가져오기 보이기) 를 사용하지 않습니다.
그렇다면 도대체 무엇이 스텔스 상대 가져오기이고, 무엇이 표시된 상대 가져오기입니까?예를 들어 다음과 같은 패키지 구조를 가정해 보겠습니다.
thing
├── books
│   ├── adventure.py
│   ├── history.py
│   ├── horror.py
│   ├── __init__.py
│   └── lovestory.py
├── furniture
│   ├── armchair.py
│   ├── bench.py
│   ├── __init__.py
│   ├── screen.py
│   └── stool.py
└── __init__.py

books에서 bench를 참조하면 다음과 같은 몇 가지 방법이 있습니다.
import bench                 #    implicit relative import
from . import bench          #    explicit relative import
from furniture import bench  #    absolute import

은식 상대는 해석기가 누구를 상대하는지 알려주지 않았지만 기본 상대는 현재 모듈과 같다.디스플레이 상대는 해석기가 누가 가져올지 명확하게 알려준다.상기 가져오기 방식의 세 번째는 공식적으로 추천한 것입니다. 첫 번째는 공식적으로 강력하게 추천하지 않는 것입니다. 파이톤3은 이미 폐기되었고 이런 방식은 path의 모듈을 가져오는 데만 사용할 수 있습니다.
참조 링크: 1.http://stackoverflow.com/questions/10570635/scrapy-importerror-no-module-named-items 2.http://kuanghy.github.io/2016/07/21/python-import-relative-and-absolute

좋은 웹페이지 즐겨찾기