2013-12-21 6 views
4

내 소스 디렉토리에 py.test를 호출 할 때 다음과 같은 오류 메시지에 달린 플라스크 API에 py.test 기능을 추가하는 중에py.test import error "- '구성'을 찾을 수 없습니다."

E    ImportStringError: import_string() failed for 'config'. Possible reasons are: 
E    
E    - missing __init__.py in a package; 
E    - package or module path not included in sys.path; 
E    - duplicated package or module name taking precedence in sys.path; 
E    - missing module, class, function or variable; 
E    
E    Debugged import: 
E    
E    - 'config' not found. 
E    
E    Original exception: 
E    
E    ImportError: No module named config 
문제는 내 플라스크 응용 프로그램을 인스턴스화 한 후에 줄기 보인다

및 config.py에서 구성을 가져 오십시오 (5 행).

구성 변수를 가져 오기 대신 수동으로 설정하면 모든 것이 제대로 작동하는 것처럼 보입니다. 아무도 이런 일이 발생 했습니까? 나는 문서에서 도움이되는 것을 찾을 수 없었다.

답변

11

나는이 사람이

E   - package or module path not included in sys.path; 
E   - duplicated package or module name taking precedence in sys.path; 

가장 가능성이 그래서 시도하려는 제일 먼저 config_default.py 같은 것으로 구성 파일의 이름을 변경하는 것입니다 가정합니다.

그럼 당신은 문자열 예를 들어, 대신 실제 개체를 사용하려고 할 수 있습니다. 수입은 자신을 config (설정) :

from flask import Flask 
import config 

# Setup app 
app = Flask(__name__) 
app.config.from_object(config) 

하지만이 같은 오류가 직면하게 될 가능성이 높습니다 : ImportError: No module named config

은 또한 당신이 app.config.from_pyfile()를 사용하여 설정 파일의 전체 경로를 지정할 수 있습니다

app.config.from_pyfile('config.py') 

from_pyfile() 사용을 개체를 만드는 다른 기술 ([exc (https://github.com/mitsuhiko/flask/blob/master/flask/config.py#L129) 사용).

나 자신 from_envvar()를 사용하고 실행 (현재 supervisord)에서 사용할 설정 파일을 지정하는 prefere.

+1

가 대단히 감사합니다 나를 위해 일 대신

app.config.from_object(app.config) 

절대 가져 오기를 시도! 'from_pyfile ('... ')'은 매력처럼 작동했습니다. 해당 의사에게도 감사드립니다. 결국 저는 from_envar (...)를 사용하게 될 것입니다.하지만 지금은 여전히 ​​앱을 개발하고 있습니다 (배치 스크립트가 없으며 당신에게 무엇이 있습니까?). 다시 한 번 감사드립니다! – user1558914

+0

'myapp.flask.config' 또는 유사 항목이있는 경우'from __future__ import absolute_import'. – letmaik

+0

'from_object'와는 달리 교차 패키지 가져 오기를 할 때 오류가 발생하지 않으므로'from_pyfile'을 더 선호합니다. – benjaminz

3

Twil 좋은 점 app.config.from_object하는 대안을합니다. 그러나, 나는이 질문에 다음과 같은 문제가 발생했습니다 Flask Tutorial 그리고 나는 가이드를 따르고 from_object를 사용하고 싶었습니다.

내 문제를 해결하는 방법

내가 원래 내 '응용 프로그램'패키지의 config.py 파일을 넣어했다고했다. 그것은 내 run.py 스크립트가 있던 동일한 폴더에 내 응용 프로그램 외부에 있어야합니다.

이 답변으로 누군가에게 약간의 시간이 절약되기를 바랍니다.

0

app.config.from_pyfile('config.py')-app.config.from_object(config) 해결 변경.

5

이 내가이 이러한 일이 일어날 플라스크의 이전 게시물 매우 중요한 문제가 있지만. 누구나 동일한 문제가 발생하면 config.py 파일의 경로를 확인해야합니다. 처음에는 app.py 디렉토리에 config.py를 만들었습니다. 그런 다음 앱 밖으로 이동했는데 작동합니다.이처럼 :

-app--- 
    | 
    |----__init__.py 
    |----config.py 

변경하려면 :

-app--- 
    | 
    |----__init__.py 
-config.py 
+0

매력처럼 작동했습니다! 감사 – trex

0

그냥

관련 문제