2016-08-16 3 views
0

이 주제에 대한 검색을 수행하고 이전 스레드를 찾았지만 파이썬에서 여전히 전체 초보자이므로 이해하지 못했습니다.windows 스케줄러를 통해 실행할 때 Python ImportError

나는 여러 개의 .py 파일에 저장된 긴 문자열 변수를 하위 디렉토리에 가지고있는 Python 스크립트를 가지고있다. 스크립트를 실행할 때 그 하위 디렉토리에서 .py 파일을 가져오고 있습니다. 하위 디렉토리에 __init__.py 파일이 있습니다. 이 설치를 사용하는 유일한 이유는 다른 파일에 저장하는 긴 문자열 변수가 SQL 문자열이므로 50-100 줄까지 읽을 수 있기 때문에 코드를 읽기가 어렵게 만듭니다.

PyCharm을 통해이 스크립트를 실행하면 모든 것이 완벽하게 작동합니다.

그러나 Windows 스케줄러 또는 배치 파일을 통해 스크립트를 실행하면 하위 디렉토리에있는 .py 파일 모두에 대해 ImportError가 발생합니다. 이 문제는 python 스크립트가 Windows 스케줄러를 통해 실행될 때 .py 파일을 찾을 위치를 모르는 것과 분명히 관련이 있습니다. 하지만 어떻게 수정해야할지 모르겠습니다.

D:\Python35\python.exe "D:\python\tableaudatasourcebuilds\dcitechnicalperformance\dcitechnicalperformance0.py" 

:

스케줄러 작업에 대한 조치는

D:\python\tableaudatasourcebuilds\dcitechnicalperformance\dcitechnicalperformance0.py 

그래서 전체 작업이처럼 보이는 스크립트로 인수와 파이썬 EXE

D:\Python35\python.exe 

을 실행하는

입니다 긴 문자열 변수 .py 파일을 저장하는 서브 디렉토리는 다음과 같습니다.

D:\python\tableaudatasourcebuilds\dcitechnicalperformance\dcitechnicalperformance0\ 

수입품 16,는 다음과 같다 :

from dcitechnicalperformance.dcitechnicalperformance0.dciquer import nzsqldciwk 

사람이 문제를 해결하는 방법을 알고 있나요? 어떤 도움이라도 대단히 감사합니다.

답변

0

안녕하세요, 모두의

먼저 내가 어떤 전문가 의미가 아니에요, 모듈에 긴 SQL의 querys를 저장하기 위해이 얼마나 의미 알고 있지만 JSON 파일 같은 것을하지 않는다 (또는 지옥, 심지어는 SQL 내부의 테이블에 저장) 더 나은 접근 방법처럼 보입니다. 당신의 문제에 대한

나는 그것이 작업이 시작됩니다 현재 디렉토리에있는 생각, 내가 설명하자

PyCharm에서
  • 당신이 파일의 위치에서 을 시작하는 코드를 실행하고, 따라서 모듈과 함께 디렉토리를 찾을 수 있습니다.
  • 예약 된 작업으로 다른 디렉토리에서 시작될 수 있으므로 디렉토리가 없으므로 모듈을 찾을 수 없습니다.

    @ECHO OFF 
    D: 
    cd D:\python\tableaudatasourcebuilds\dcitechnicalperformance\ 
    D:\Python35\python.exe dcitechnicalperformance0.py 
    

    을 그리고 그 작동합니다 :

프로젝트 위치를 탐색 .bat 파일을 생성하는 것입니다 귀하의 비난 그럴듯한 솔루션을 고수하기로 결정하는 경우.

+0

불행히도이 솔루션은 저에게 적합하지 않았습니다. 수입 오류가 발생했습니다. 내가 해결 한 방법은 쿼리를 텍스트로 저장하고 텍스트 파일을 코드로 실행하는 것입니다. 그래도 최적의 솔루션은 아니지만 적어도 작동합니다. – SeaChange