Google App Engine“没有名为 pwd 的模块”
Posted
技术标签:
【中文标题】Google App Engine“没有名为 pwd 的模块”【英文标题】:Google App Engine 'No module named pwd' 【发布时间】:2015-04-24 10:27:24 【问题描述】:我能够很好地运行我的 Google App Engine 项目(我正在使用 Python Flask 开发网络应用程序),但是当我将系统从 Ubuntu 12.04 升级到 14.04 时。 App Engine 项目在本地系统上变得无响应,而在生产环境中运行良好。我还保持我的项目更新,将我的源代码放在 github 上,所以我删除了所有内容并再次从我的 github 帐户中克隆了一个新的存储库。但是当我运行该项目时,它给了我以下错误,如果有人在此之前遇到此错误,请帮助我。
我使用这个命令来运行我的项目
$ dev_appserver.py src/
并在终端输出此错误
WARNING 2015-02-23 06:13:02,341 simple_search_stub.py:1115] Could not read search indexes from /tmp/appengine.practical-now-720.chitrank/search_indexes
INFO 2015-02-23 06:13:02,347 api_server.py:172] Starting API server at: http://localhost:60268
INFO 2015-02-23 06:13:02,368 dispatcher.py:186] Starting module "default" running at: http://localhost:8080
INFO 2015-02-23 06:13:02,369 admin_server.py:118] Starting admin server at: http://localhost:8000
ERROR 2015-02-23 06:13:05,655 wsgi.py:263]
Traceback (most recent call last):
File "/home/chitrank/google_appengine/google/appengine/runtime/wsgi.py", line 240, in Handle
handler = _config_handle.add_wsgi_middleware(self._LoadHandler())
File "/home/chitrank/google_appengine/google/appengine/runtime/wsgi.py", line 299, in _LoadHandler
handler, path, err = LoadObject(self._handler)
File "/home/chitrank/google_appengine/google/appengine/runtime/wsgi.py", line 85, in LoadObject
obj = __import__(path[0])
File "/home/chitrank/Documents/Google_App_Engine/GoogleCloudPlatform/uscore-firstsubmit/uscore/src/run.py", line 5, in <module>
import application
File "/home/chitrank/Documents/Google_App_Engine/GoogleCloudPlatform/uscore-firstsubmit/uscore/src/application/__init__.py", line 47, in <module>
import urls
File "/home/chitrank/Documents/Google_App_Engine/GoogleCloudPlatform/uscore-firstsubmit/uscore/src/application/urls.py", line 10, in <module>
from application import views
File "/home/chitrank/Documents/Google_App_Engine/GoogleCloudPlatform/uscore-firstsubmit/uscore/src/application/views.py", line 49, in <module>
import requests
File "/home/chitrank/Documents/Google_App_Engine/GoogleCloudPlatform/uscore-firstsubmit/uscore/src/lib/requests/__init__.py", line 58, in <module>
from . import utils
File "/home/chitrank/Documents/Google_App_Engine/GoogleCloudPlatform/uscore-firstsubmit/uscore/src/lib/requests/utils.py", line 19, in <module>
from netrc import netrc, NetrcParseError
File "/usr/lib/python2.7/netrc.py", line 7, in <module>
import pwd
File "/home/chitrank/google_appengine/google/appengine/tools/devappserver2/python/sandbox.py", line 898, in load_module
raise ImportError('No module named %s' % fullname)
ImportError: No module named pwd
INFO 2015-02-23 06:13:05,710 module.py:718] default: "GET /_ah/warmup HTTP/1.1" 500 -
如果有人解决了这个问题,请帮我解决以下问题。
【问题讨论】:
你能在普通 Python shell 中import pwd
吗?
"ImportError: No module named pwd" but it exists的可能重复
@Dmitry 是的,我可以从通用 python Shell 运行import pwd
@rnevius 上述问题无法解决我的问题
在此处查看解决方案***.com/a/40475261/7049567 以切换到旧版本的 oauth2client。
【参考方案1】:
在google_appengine/google/appengine/tools/devappserver2/python/sandbox.py
中有_WHITE_LIST_C_MODULES
列表,添加'pwd'
对我有用。
Google 实际上是在沙盒中运行的。由于生产环境没有问题,旧的 GAE SDK 将支持pwd
导入,但他们即将删除它。
【讨论】:
我已将pwd
添加到数组中。但在部署后问题仍然存在。
@loretoparisi 似乎谷歌删除了向后兼容性,因为它已被弃用。【参考方案2】:
您使用什么版本的请求?
你能不能说明如下:
import requests
requests.version
'x.x.x'
$ dpkg -l | grep requests
附带说明:您使用的请求版本可能有点旧,我建议您尽可能升级到 2.3.4 或最新版本并试一试!
您可以查看以下链接:
[1]https://github.com/kennethreitz/requests/blob/v2.2.1/requests/utils.py#L19
[2]https://github.com/kennethreitz/requests/pull/1709
【讨论】:
以上是关于Google App Engine“没有名为 pwd 的模块”的主要内容,如果未能解决你的问题,请参考以下文章
连接 Google App Engine 和 Google Compute Engine
Google App Engine Flexible 和 Google Container Engine 之间的区别?
如何在 Google Cloud App Engine 上使用 PubSub 创建订阅者,该订阅者通过 Publisher 从 Google Cloud App Engine Flex 收听消息?
将 Meteor 部署到 Google App Engine 2017