서울땅콩의 취미생활

원인

Scrapy에서 Spider를 실행하면 다음과 같은 에러가 발생한다.

 

 

py파일 상단에 다음과 같이 선언하는 경우...

from openapi_gg_go_kr import openapi_gg_go_kr_Spider

VisualCode에서 실행하면 잘 실행이 되지만 CommandLine에서 실행시 openapi_gg_go_kr을 찾지못하는 현상.

 

 

py파일 상단에 다음과 같이 선언하는 경우...

from .openapi_gg_go_kr import openapi_gg_go_kr_Spider

VisualCode에서는 실행이 안되고 CommandLine에서 실행시 실행이 잘되는 현상.

 

 

결국, VisualCode에서도 실행이 잘되고, CommandLine에서도 실행이 잘되야 작업이 수월해지므로...

해결책을 찾아봄.

 

해결책

py파일 상단에 다음과 같이 추가하여 절대경로를 잡아준다.

import os
import sys
sys.path.append(os.path.dirname(os.path.abspath(os.path.dirname(__file__))))
from openapi_gg_go_kr import openapi_gg_go_kr_Spider

 

추가하고 실행하니...

VisualCode에서도 F5로 실행시 openapi_gg_go_kr파일을 잘 찾고, CommandLine에서 scrapy crawl 명령어로 실행해도 openapi_gg_go_kr파일을 잘 찾는다.

 

 

절대경로로 잡아줘서 되는줄 알았는데.... 알고보니 그게 아니었다...

원인은 openapi_gg_go_kr.py 파일 위치 문제였던거 같다.

 

수정 전 구조...

scrapy_version

  |  |-- log

  |  |--out

  |  |--spiders

        |--openapi_gg_go_kr.py

 

위의 구조에서의 문제...

아래와 같이 수정해주니 문제없이 된다.

 

scrapy_version

  |  |-- log

  |  |--out

  |  |--spiders

  |--openapi_gg_go_kr.py

 

그리고 각각의 spider 파일에서는 다음과 같이 import 해줬다.

import scrapy
from openapi_gg_go_kr import openapi_gg_go_kr_Spider

 

그런데... 다시 보니 또 다른 문제가 발생

결론

각각의 Spider 상위에 다음의 코드는 추가해 주는것이 맞다.

 

import os
import sys
sys.path.append(os.path.dirname(os.path.abspath(os.path.dirname(__file__))))

 

그래야 아래와 같은 환경이 만들어진다.

 

VisualCode에서 실행시에는 Sipders 폴더 내에있는 openapi_gg_go_kr을 참조하는것 같고...

CommandLine에서 실행시에는 상위폴더인 scrapy_version 내에있는 openapi_gg_go_kr을 참조하는것 같다.

 

공유하기

facebook twitter kakaoTalk kakaostory naver band