已安装six模块仍无法导入求助(Google App Engine Python2.7环境)
解决Google App Engine Python 2.7中导入
six.moves失败的问题 我来帮你搞定这个头疼的问题——你在GAE Python2.7环境里装了six但始终导入失败,核心原因是GAE的沙箱环境不会自动读取你本地虚拟环境里的第三方库,它只会加载你项目目录内的文件和官方内置库。下面是几个亲测有效的解决办法:
方法1:直接将six复制到项目目录
GAE只会识别项目根目录或指定文件夹里的第三方包,你可以手动把six从虚拟环境复制到项目里:
- 先在项目根目录创建一个
lib文件夹(用来统一存放第三方库):mkdir lib - 把虚拟环境里的
six文件夹复制到lib目录:cp -r /path/to/file/DeployedProjects/goinpact/env/lib/python2.7/site-packages/six ./lib/ - 最后在你的
main.py开头添加这段代码,让Python优先加载lib目录里的库:import sys import os # 将lib目录加入Python的搜索路径 sys.path.insert(0, os.path.join(os.path.dirname(__file__), 'lib'))
方法2:用pip install -t直接安装到项目目录
更规范的方式是用pip的-t参数,直接把six安装到项目的lib目录,避免手动复制的麻烦:
- 同样先创建
lib文件夹(如果没有的话):mkdir lib - 执行安装命令,指定安装目录为
./lib:pip install six==1.11.0 -t ./lib/ - 别忘了在
main.py里添加上面的sys.path配置代码,确保Python能找到这个库。
方法3:验证导入是否正常
修改完成后,先在本地测试一下是否能正常导入:
在项目目录下打开Python终端,执行:
import sys sys.path.insert(0, './lib') import six from six.moves import http_client print("six模块导入成功!")
如果没有报错,再启动GAE本地开发服务器测试Web应用,应该就能解决ImportError: No module named six.moves的问题了。
为什么会出现这个问题?
Google App Engine的Python 2.7运行环境是一个受限的沙箱,它不会使用你本地虚拟环境的site-packages目录,只会加载:
- 你项目目录下的所有文件
- GAE官方预安装的内置库(比如
google.appengine相关模块)
所以你之前用pip install装到虚拟环境的six,GAE根本无法访问,必须把库放到项目目录内让它能加载到。
内容的提问来源于stack exchange,提问作者pablo-az
相关产品推荐
相关产品推荐

