2016-09-27 3 views
0

파이썬 모듈에서 클래스를 가져 오는 데 문제가 있습니다. 이 라인에서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 

임 확실하지 왜, 클래스 제는 items.py (깊은 폴더)

에 정의되어 있기 때문에

누군가 내게 설명을 줄 수 있습니까?

+0

pyc 파일을 삭제하고 – MrPandav

+0

을 다시 실행 해보십시오. 왜 클래스 1 ij wikiSpider와 Spider 디렉토리에 두 개의 항목이 있습니까? – MrPandav

+0

불행히도 did'nt는 일했다 ... – Jacs

답변

1

root 및 _spiders 폴더에 items.py가 있습니다. 하위 폴더의 파일을 참조하려면 폴더 이름과 파일이 필요합니다. 이 코드를 가져 파일을 가정 _spiders.items 수입 제

에서

은 루트 디렉토리에 있습니다. 파이썬은 여러분이 여기에있는 파일 위치를 디렉토리 계층 구조로 사용합니다.

0
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 파일을 찾을 수 없습니다, 우리는 제 클래스를 만든 items.py 파일을 열려면, 그래서 '이 없습니다 보여줍니다 가져 오기 오류 '

1

다른 사람들과 마찬가지로 순환 참조 문제가 없습니다. 나는 여기서 좀 더 일반적인 해결책을 일반화하고 싶다.

파일 이름이 충돌하면이 문제가 발생할 수 있습니다. 동일한 이름의 하위 파일을 여러 개 가질 수 있습니다 (위와 동일).

아니면 당신이 예

에서 작업하는 파일 수 : 애완 동물 프로젝트로 trello.py.. from trello import TrelloApi

pip 설치 패키지를 가져 오기 전에 가져 오기 참조가 가져 오기됩니다. trello 및 참조 객체를 직접 가져 오려고하면 "NameError : name ''이 정의되지 않았습니다."

관련 문제