2016-03-03 3 views
0

У меня есть приложение Flask, структурированное для развертывания как wsgi. Я имею вопрос, когда я хочу загрузить файлы из интерпретатора Python.Доступ к фляге wsgi структурированное приложение от интерпретатора

Структура:

|----api 
|---------api 
|--------------static 
|--------------templates 
|--------------venv 
|--------------models.py 
|--------------... 

Так что в интерпретатора, когда я загрузить файлы в каталоге api/api мне нужно обращаться к ним как dir.filename. Например, если у меня есть файл, api/api/models.py, я могу загрузить его, введя команду from api.mb_models import db ... однако этот синтаксис дросселируется при запуске приложения wsgi через веб-сервер. то я получаю ошибку, что файл не завершает работу:

Traceback (most recent call last): File "api/extract.py", line 15, in <module> import api.models as models ImportError: No module named api.models

Я также попытался задающей переменным Os следующим образом,

path = 'api' 
os.chdir(path) 

и в то время как это работает сейчас, как WSGI, я получил то же самое при попытке загрузить из интерпретатора. Единственный способ, с помощью которого я могу запустить этот проект в качестве wsgi, не указывать путь в моих операторах импорта или использовать атрибут os, который не работает при загрузке файлов в интерпретаторе

Вопрос заключается в том, как разделить та же конфигурация для развертывания в качестве приложения wsgi И для работы с интерпретатором Python.

Примечание: Я использую виртуальную среду.

EDIT

я удалил все ссылки dir в моем импорте файлов, так что приложение WSGI функционирует по желанию, а затем побежал os.cwd() в переводчике, который дал мне ожидаемый результат /Users/gms/development/python/api. Затем я установил рабочий каталог с помощью os.chdir('/Users/gms/development/python/api/api'), запустил os.cwd() и получил желаемый результат для рабочего каталога, но я все равно получаю ImportError: No module named extract, когда я пытаюсь загрузить его из интерпретатора.

ответ

0

Я понял. Мне нужно установить их в интерпретаторе:

import sys 
sys.path.append('working path here') 

И, вуаля, все работает по своему желанию.

Смежные вопросы