在 virtualenv 中使用 dev_appserver.py 时导入错误
Import error while using dev_appserver.py in virtualenv
当我 运行 dev_appserver.py .
(在包含 app.py
的目录中)在带有 Python 2.7.12 的 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
当我不在 virtualenv 中时工作正常。 warnings
模块是 python 标准库的一部分,据我所知,所以不确定在这里做什么。 运行 pip install warnings
没有帮助。
如何在 virtualenv 中将 dev_appserver.py 变为 运行?
我没有以正确的方式使用 dev_appserver.py 和 virtualenv。这里不使用 Virtualenv。找到了使用第三方库的相关文档 here.
简而言之,包含第三方库 dev_appserver.py:
指示 pip 将库存储在带有 -t
标志的文件夹中:
$ pip install -t lib/ <library name>
在与 app
相同的文件夹中创建一个名为 appengine_config.py
的文件,并包含以下代码:
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
库)。
当我 运行 dev_appserver.py .
(在包含 app.py
的目录中)在带有 Python 2.7.12 的 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
当我不在 virtualenv 中时工作正常。 warnings
模块是 python 标准库的一部分,据我所知,所以不确定在这里做什么。 运行 pip install warnings
没有帮助。
如何在 virtualenv 中将 dev_appserver.py 变为 运行?
我没有以正确的方式使用 dev_appserver.py 和 virtualenv。这里不使用 Virtualenv。找到了使用第三方库的相关文档 here.
简而言之,包含第三方库 dev_appserver.py:
指示 pip 将库存储在带有 -t
标志的文件夹中:
$ pip install -t lib/ <library name>
在与 app
相同的文件夹中创建一个名为 appengine_config.py
的文件,并包含以下代码:
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
库)。