在本地的virtualenv中启动GAE时,没有名为警告的模块

时间:2017-08-31 14:20:02

标签: python macos python-2.7 google-app-engine virtualenv

我正在尝试在虚拟环境中本地运行我的GAE应用程序。

我已经关注这两篇文章[1][2]作为设置的参考,但是当我source evn/bin/activate然后dev_appserver.py .时,它会不断提高错误率ImportError: No module named warnings(下面有更多内容)

令人惊讶的是,如果我在没有激活虚拟env的情况下启动它,只需在项目根目录中运行dev_appserver.py .就可以毫无问题地运行它。

此问题是否有解决方案或解决方法?

INFO     2017-08-31 14:09:36,293 devappserver2.py:116] Skipping SDK update check.
INFO     2017-08-31 14:09:36,354 api_server.py:313] Starting API server at: http://localhost:52608
INFO     2017-08-31 14:09:36,357 dispatcher.py:226] Starting module "default" running at: http://localhost:8080
INFO     2017-08-31 14:09:36,359 admin_server.py:116] Starting admin server at: http://localhost:8000
Traceback (most recent call last):
  File "/usr/local/share/google/google-cloud-sdk/platform/google_appengine/_python_runtime.py", line 103, in <module>
    _run_file(__file__, globals())
  File "/usr/local/share/google/google-cloud-sdk/platform/google_appengine/_python_runtime.py", line 97, in _run_file
    execfile(_PATHS.script_file(script_name), globals_)
  File "/usr/local/share/google/google-cloud-sdk/platform/google_appengine/google/appengine/tools/devappserver2/python/runtime.py", line 192, in <module>
    main()
  File "/usr/local/share/google/google-cloud-sdk/platform/google_appengine/google/appengine/tools/devappserver2/python/runtime.py", line 172, in main
    sandbox.enable_sandbox(config)
  File "/usr/local/share/google/google-cloud-sdk/platform/google_appengine/google/appengine/tools/devappserver2/python/sandbox.py", line 326, in enable_sandbox
    __import__('%s.threading' % dist27.__name__)
  File "/usr/local/share/google/google-cloud-sdk/platform/google_appengine/google/appengine/dist27/threading.py", line 11, in <module>
    import warnings
  File "/usr/local/share/google/google-cloud-sdk/platform/google_appengine/google/appengine/tools/devappserver2/python/sandbox.py", line 1076, in load_module
    raise ImportError('No module named %s' % fullname)
ImportError: No module named warnings
ERROR    2017-08-31 14:09:39,070 instance.py:280] Cannot connect to the instance on localhost:52366

3 个答案:

答案 0 :(得分:13)

我已经通过移除skip_files .yaml - venv行的venv来解决此问题。 - ^venv$是我的virtualenv文件夹,我仍然有{{1}}行。如果有人帮助; - )

答案 1 :(得分:4)

标准环境 GAE应用程序(GAE未提供)的所有依赖项必须安装在应用程序本身中,而不是本地系统上。请参阅Using third-party libraries

由于GAE不关心您的本地系统库(除了运行开发服务器所需的基本python 2.7安装之外),使用virtualenv开发标准的env GAE应用程序并没有多大意义。

您提到的文章所建议的virtualenv的使用实际上可能会带来麻烦:

  • 本地python库在本地运行时会干扰GAE运行时提供的等效库(来自SDK)(我怀疑这是你正在经历的某种程度)
  • 在部署时,lib目录(包括python安装的所有站点包)的内容将上传到GAE,可能导致与GAE运行时提供的库发生冲突或超出应用程序文件配额

所以我的建议是放弃virtualenv(在某种程度上,当你跳过virtualenv激活时你做了)并改为使用官方文档。

答案 2 :(得分:0)

在virtualenv中使用dev_appserver.py一次在不同目录中运行两个AppEngine项目时出现此问题。

如果我使用绝对路径,我发现它可以正常工作。