【发布时间】:2018-12-18 06:17:47
【问题描述】:
尝试运行我的 GAE Python 2.7 应用时出现以下错误。
ImportError: No module named six
我已关注this 页面并设置了我的app.yaml 文件,如下所示。
...
libraries:
- name: six
version: "1.9.0"
- name: flask
version: "0.12"
- name: jinja2
version: "2.6"
- name: pycrypto
version: "2.6.1"
- name: markupsafe
version: "0.23"
- name: werkzeug
version: "0.11.10"
- name: pytz
version: "2017.3"
当我尝试导入 flask 包时,我第一次遇到此错误。所以我写了一些调试代码来调查这个问题,我发现我也不能直接导入six。
我打印出sys.path 变量。
['C:\\Users\\user\\PycharmProjects\\gaeapp\\dist', 'C:\\Users\\user\\PycharmProjects\\gaeapp\\dist\\lib', 'C:\\Program Files (x86)\\Google\\google_appengine', 'C:\\Program Files (x86)\\Google\\google_appengine', 'C:\\Users\\user\\AppData\\Local\\conda\\conda\\envs\\py27-base\\DLLs', 'C:\\Users\\user\\AppData\\Local\\conda\\conda\\envs\\py27-base\\lib', 'C:\\Users\\user\\AppData\\Local\\conda\\conda\\envs\\py27-base', 'C:\\Program Files (x86)\\Google\\google_appengine\\lib\\flask-0.12', 'C:\\Program Files (x86)\\Google\\google_appengine\\lib\\jinja2-2.6', 'C:\\Program Files (x86)\\Google\\google_appengine\\lib\\pycrypto-2.6.1', 'C:\\Program Files (x86)\\Google\\google_appengine\\lib\\markupsafe-0.23', 'C:\\Program Files (x86)\\Google\\google_appengine\\lib\\werkzeug-0.11.10', 'C:\\Program Files (x86)\\Google\\google_appengine\\lib\\pytz-2017.3', 'C:\\Program Files (x86)\\Google\\google_appengine\\lib\\six-1.9.0', 'C:\\Program Files (x86)\\Google\\google_appengine\\lib\\click-6.6', 'C:\\Program Files (x86)\\Google\\google_appengine\\lib\\itsdangerous-0.24', 'C:\\Program Files (x86)\\Google\\google_appengine\\lib\\setuptools-0.6c11', 'C:\\Program Files (x86)\\Google\\google_appengine\\lib\\protorpc-1.0', 'C:\\Program Files (x86)\\Google\\google_appengine\\lib\\webapp2-2.3', 'C:\\Program Files (x86)\\Google\\google_appengine\\lib\\webob-1.1.1', 'C:\\Program Files (x86)\\Google\\google_appengine\\lib\\yaml-3.10']
我还检查了 C:\Program Files (x86)\Google\google_appengine\lib\six-1.9.0 存在。
我也试过直接在python shell中导入six包,成功了。
(py27-base) C:\>set PYTHONPATH=C:\Program Files (x86)\Google\google_appengine\lib\six-1.9.0
(py27-base) C:\>python
Python 2.7.15 |Anaconda, Inc.| (default, Nov 13 2018, 17:33:26) [MSC v.1500 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import six
>>> six
<module 'six' from 'C:\Program Files (x86)\Google\google_appengine\lib\six-1.9.0\six\__init__.py'>
>>> exit()
所以我想知道是什么阻止了我的应用在 dev_appserver 环境中导入 six。
环境细节
- Windows 10 64 位,内部版本 1809
- Python 2.7.15 :: Anaconda, Inc.
- GAE Python 标准 SDK,版本 1.9.80。 不是 GCloud SDK
日志详情
2018-12-19 14:00:18 Running command: "['C:\\Users\\user\\AppData\\Local\\conda\\conda\\envs\\py27-base\\pythonw.exe', 'C:\\Program Files (x86)\\Google\\google_appengine\\dev_appserver.py', '--skip_sdk_update_check=yes', '--port=8080', '--admin_port=8000', 'C:\\Users\\user\\PycharmProjects\\gaeapp\\dist']"
INFO 2018-12-19 14:00:22,907 devappserver2.py:278] Skipping SDK update check.
INFO 2018-12-19 14:00:23,483 api_server.py:275] Starting API server at: http://localhost:54700
INFO 2018-12-19 14:00:23,493 dispatcher.py:256] Starting module "default" running at: http://localhost:8080
INFO 2018-12-19 14:00:23,497 admin_server.py:150] Starting admin server at: http://localhost:8000
INFO 2018-12-19 14:00:28,579 instance.py:294] Instance PID: 11908
INFO 2018-12-19 14:00:30,862 module.py:861] default: "GET / HTTP/1.1" 404 -
INFO 2018-12-19 14:00:35,223 module.py:434] [default] Detected file changes:
blog\__init__.pyc
WARNING 2018-12-19 06:00:35,575 sandbox.py:1086] The module _winreg is whitelisted for local dev only. If your application relies on _winreg, it is likely that it will not function properly in production.
WARNING 2018-12-19 06:00:35,953 sandbox.py:1086] The module _ctypes is whitelisted for local dev only. If your application relies on _ctypes, it is likely that it will not function properly in production.
WARNING 2018-12-19 06:00:36,165 sandbox.py:1086] The module msvcrt is whitelisted for local dev only. If your application relies on msvcrt, it is likely that it will not function properly in production.
ERROR 2018-12-19 06:00:36,315 wsgi.py:263]
Traceback (most recent call last):
File "C:\Program Files (x86)\Google\google_appengine\google\appengine\runtime\wsgi.py", line 240, in Handle
handler = _config_handle.add_wsgi_middleware(self._LoadHandler())
File "C:\Program Files (x86)\Google\google_appengine\google\appengine\runtime\wsgi.py", line 299, in _LoadHandler
handler, path, err = LoadObject(self._handler)
File "C:\Program Files (x86)\Google\google_appengine\google\appengine\runtime\wsgi.py", line 85, in LoadObject
obj = __import__(path[0])
File "C:\Users\user\PycharmProjects\gaeapp\dist\blog\__init__.py", line 6, in <module>
from blog.resources import bloglist, blog, comment
File "C:\Users\user\PycharmProjects\gaeapp\dist\blog\resources\__init__.py", line 7, in <module>
from flask_restful import fields
File "C:\Users\user\PycharmProjects\gaeapp\dist\lib\flask_restful\fields.py", line 6, in <module>
import six
File "C:\Program Files (x86)\Google\google_appengine\google\appengine\tools\devappserver2\python\runtime\sandbox.py", line 1149, in load_module
raise ImportError('No module named %s' % fullname)
ImportError: No module named six
INFO 2018-12-19 14:00:36,362 module.py:861] default: "GET /blog/resources/blogs HTTP/1.1" 500 -
INFO 2018-12-19 14:00:41,301 instance.py:294] Instance PID: 19088
INFO 2018-12-19 14:00:41,301 module.py:434] [default] Detected file changes:
blog
【问题讨论】:
-
@DanCornilescu,感谢您的指出。实际上,我的代码中的缩进是正确的。但不知何故在帖子中搞砸了。
-
你能显示完整的回溯吗?您使用的是 GAE 还是 Cloud SDK?您似乎正在通过 Pycharm 运行开发服务器 - 您是否也可以尝试从 shell 运行它 - 以防万一这是 pycharm 配置问题?也许准确地展示你是如何运行开发服务器的(我的意思是命令行)。
-
除了上面Dan的问题,你运行的是什么版本的Cloud SDK?您可以通过运行命令
gcloud component list找到它。 -
在帖子中添加了更多详细信息。 @DanCornilescu,我在 PyCharm 中运行时观察到了这个错误,并使用 GAE 启动器重现了它。
标签: python google-app-engine google-cloud-platform