2017-02-21 2 views
5

Когда я бегу dev_appserver.py . (в директории, содержащей app.py), находясь в virtualenv с Python 2.7.12, я получаю эту ошибку и вывод:ошибка импорта при использовании dev_appserver.py в virtualenv

(.venv)$ dev_appserver.py .                
INFO  2017-02-21 18:54:47,250 devappserver2.py:764] Skipping SDK update check. 
INFO  2017-02-21 18:54:47,273 api_server.py:268] Starting API server at: http://localhost:35473 
INFO  2017-02-21 18:54:47,276 dispatcher.py:199] Starting module "default" running at: http://localhost:8080 
INFO  2017-02-21 18:54:47,276 admin_server.py:116] Starting admin server at: http://localhost:8000 
Traceback (most recent call last): 
    File "/opt/gcloud/google-cloud-sdk/platform/google_appengine/_python_runtime.py", line 101, in <module> 
_run_file(__file__, globals()) 
    File "/opt/gcloud/google-cloud-sdk/platform/google_appengine/_python_runtime.py", line 97, in _run_file 
execfile(_PATHS.script_file(script_name), globals_) 
    File "/opt/gcloud/google-cloud-sdk/platform/google_appengine/google/appengine/tools/devappserver2/python/runtime.py", line 185, in <module> 
main() 
    File "/opt/gcloud/google-cloud-sdk/platform/google_appengine/google/appengine/tools/devappserver2/python/runtime.py", line 165, in main 
sandbox.enable_sandbox(config) 
    File "/opt/gcloud/google-cloud-sdk/platform/google_appengine/google/appengine/tools/devappserver2/python/sandbox.py", line 198, in enable_sandbox 
__import__('%s.threading' % dist27.__name__) 
    File "/opt/gcloud/google-cloud-sdk/platform/google_appengine/google/appengine/dist27/threading.py", line 11, in <module> 
import warnings 
    File "/opt/gcloud/google-cloud-sdk/platform/google_appengine/google/appengine/tools/devappserver2/python/sandbox.py", line 1001, in load_module 
raise ImportError('No module named %s' % fullname) 
ImportError: No module named warnings 

Works отлично, когда я не в виртуальном. Модуль warnings является частью стандартной библиотеки python, насколько я понимаю, поэтому не уверен, что делать здесь. Запуск pip install warnings не помогает.

Как получить dev_appserver.py для запуска в virtualenv?

+0

В вашем каталоге '.venv/lib/python2.7' есть символическая ссылка для' warnings.py' –

+0

Да, она есть. – haeger

+0

@haeger, смогли ли вы решить эту проблему? Я также придерживаюсь той же проблемы –

ответ

4

Я не работал с dev_appserver.py и virtualenv надлежащим образом. Virtualenv нельзя использовать здесь. Соответствующая документация по использованию сторонних библиотек находится here.


Короче говоря, включить сторонние библиотеки с dev_appserver.py:

проинструктировать ПГИ хранить библиотеки в папке с -t флагом:

$ pip install -t lib/ <library name> 

Создайте файл с именем appengine_config.py в в той же папке, что и app, и включают в себя следующий код:

from google.appengine.ext import vendor 

# Add any libraries install in the "lib" folder. 
vendor.add('lib') 

Теперь запустите dev_appserver.py как обычно: $ dev_appserver.py app.yaml


Имейте в виду, что вы можете использовать только библиотеки Python, которые используют чистый код Python (например, библиотека bcrypt не может быть использована.).

+2

Я не понимаю, что официальная документация предполагает, что вы используете virtualenv. Даже ссылка, которую вы дали, предполагает, что виртуальный пользователь может быть использован –

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