Google app engine 提示:没有名为fancy_urllib的模块

Google app engine 提示:没有名为fancy_urllib的模块,google-app-engine,nosetests,tipfy,Google App Engine,Nosetests,Tipfy,我正在尝试使用tipfy和google app engine运行nosetest,但我一直收到一个导入错误: 从google_appengine目录执行以下命令(目录包含dev_appserver.py): 但我得到了以下错误: Traceback (most recent call last): File "/usr/local/bin/nosetests", line 8, in <module> load_entry_point('nose==0.11.4', 'c

我正在尝试使用tipfy和google app engine运行nosetest,但我一直收到一个导入错误:

从google_appengine目录执行以下命令(目录包含dev_appserver.py):

但我得到了以下错误:

Traceback (most recent call last):
  File "/usr/local/bin/nosetests", line 8, in <module>
    load_entry_point('nose==0.11.4', 'console_scripts', 'nosetests')()
  File "/Library/Python/2.6/site-packages/nose-0.11.4-py2.6.egg/nose/core.py", line 117, in __init__
    **extra_args)
  File "/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/unittest.py", line 816, in __init__
    self.parseArgs(argv)
  File "/Library/Python/2.6/site-packages/nose-0.11.4-py2.6.egg/nose/core.py", line 134, in parseArgs
    self.config.configure(argv, doc=self.usage())
  File "/Library/Python/2.6/site-packages/nose-0.11.4-py2.6.egg/nose/config.py", line 323, in configure
    self.plugins.configure(options, self)
  File "/Library/Python/2.6/site-packages/nose-0.11.4-py2.6.egg/nose/plugins/manager.py", line 270, in configure
    cfg(options, config)
  File "/Library/Python/2.6/site-packages/nose-0.11.4-py2.6.egg/nose/plugins/manager.py", line 93, in __call__
    return self.call(*arg, **kw)
  File "/Library/Python/2.6/site-packages/nose-0.11.4-py2.6.egg/nose/plugins/manager.py", line 161, in simple
    result = meth(*arg, **kw)
  File "build/bdist.macosx-10.6-universal/egg/nosegae.py", line 84, in configure
  File "/Applications/GoogleAppEngineLauncher.app/Contents/Resources/GoogleAppEngine-default.bundle/Contents/Resources/google_appengine/google/appengine/tools/dev_appserver.py", line 51, in <module>
    import fancy_urllib
ImportError: No module named fancy_urllib
回溯(最近一次呼叫最后一次):
文件“/usr/local/bin/nosetests”,第8行,在
加载入口点(“nose==0.11.4”,“控制台脚本”,“nosetests”)()
文件“/Library/Python/2.6/site packages/nose-0.11.4-py2.6.egg/nose/core.py”,第117行,在__
**额外参数)
文件“/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/unittest.py”,第816行,在__
self.parseArgs(argv)
parseArgs中的文件“/Library/Python/2.6/site packages/nose-0.11.4-py2.6.egg/nose/core.py”,第134行
self.config.configure(argv,doc=self.usage())
文件“/Library/Python/2.6/site packages/nose-0.11.4-py2.6.egg/nose/config.py”,第323行,在configure中
self.plugins.configure(选项,self)
文件“/Library/Python/2.6/site packages/nose-0.11.4-py2.6.egg/nose/plugins/manager.py”,第270行,在configure中
cfg(选项,配置)
文件“/Library/Python/2.6/site packages/nose-0.11.4-py2.6.egg/nose/plugins/manager.py”,第93行,在调用中__
返回自呼叫(*arg,**kw)
文件“/Library/Python/2.6/site packages/nose-0.11.4-py2.6.egg/nose/plugins/manager.py”,第161行,简单格式
结果=方法(*参数,**kw)
文件“build/bdist.macosx-10.6-universal/egg/nosegae.py”,第84行,在configure中
文件“/Applications/GoogleAppEngineLauncher.app/Contents/Resources/GoogleAppEngine default.bundle/Contents/Resources/google\u appengine/google/appengine/tools/dev\u appserver.py”,第51行,在
进口花式英语
ImportError:没有名为fancy_urllib的模块
我可以加载tipfy hello_world项目,没有任何错误,我在同一台机器上有其他应用程序引擎项目,所有项目都运行良好


使用MacOSX10.6.6,我安装了nose和nosegae。我还尝试从/Users/me/Documents/python/project/文件夹中执行相同的命令,但得到了相同的结果

--gae-lib-root=/Applications/GoogleAppEngineLauncher.app/Contents/Resources/GoogleAppEngine-default.bundle/Contents/Resources/google_appengine

请显示pythonsys.path

我在使用Nose/NoseGAE时也遇到了这个问题。我没有尝试过各种
--gae lib root
值,但我最终有幸在MacOS安装中修补了
dev\u appserver.py
(位于
/usr/local/google\u appengine/google/appengine/tools/
),如下所示:

...
try:
  import distutils.util
except ImportError:
  pass

# ----- start of new code -----
import os, sys

DIR_PATH = '/usr/local/google_appengine'
EXTRA_PATHS = [
    DIR_PATH,
    os.path.join(DIR_PATH, 'lib', 'antlr3'),
    os.path.join(DIR_PATH, 'lib', 'django_0_96'),
    os.path.join(DIR_PATH, 'lib', 'fancy_urllib'),
    os.path.join(DIR_PATH, 'lib', 'ipaddr'),
    os.path.join(DIR_PATH, 'lib', 'webob'),
    os.path.join(DIR_PATH, 'lib', 'yaml', 'lib'),
    os.path.join(DIR_PATH, 'lib', 'simplejson'),
    os.path.join(DIR_PATH, 'lib', 'graphy'),
]
sys.path = EXTRA_PATHS + sys.path
# ----- end of new code -----

import dummy_thread
...

这与中提到的
appcfg.py
fix\u sys\u path()
)中的一些代码密切相关。我怀疑问题在于Nose如何设置执行路径,尽管目前我无法证明这一点。

我也遇到了同样的问题,下面是我的快速解决方案:

修改此文件“/usr/local/bin/dev_appserver.py”


到目前为止对我很有效。

事实证明,这是因为在GoogleAppengine午餐器的首选项中设置“Python路径”时出现了UI错误。需要输入以确认设置:

    sudo port install python2.7
然后将“Python路径”设置为

输入以确认


如果您正在运行独立脚本,那么在使用任何appengine工具之前,您必须链接到目录

import sys
sys.path.append('/usr/local/google_appengine/')
sys.path.append('/usr/local/google_appengine/lib')
sys.path.append('/usr/local/google_appengine/lib/yaml/lib/')
if 'google' in sys.modules:
    del sys.modules['google']
如今(2016年),GAE Python建议在名为“appengine_config.py”的根级文件中加载项目库

因此,如果您仍然面临一些令人讨厌的问题,请确保添加os dir路径以加载库文件夹“lib”(如下面我的代码所示):

完成上述操作后,我能够从IntelliJ(PyCharm)成功运行测试。 此外,请注意我在intelliJ(PyCharm)上的测试设置


希望上面的内容能够帮助一些Python GAE开发人员,因为我在让NoseGAE简单设置正常工作方面遇到了一些挑战。保重

我尝试过使用该选项,但结果相同-我会将sys.path添加到原始的postGAE使用Python 2.5,而不是2.6。今天晚些时候我会尝试一下。我不确定您粘贴的代码放在哪里,您能给我看完整的dev_appserver.py文件吗?在我的MacOS系统上,此编辑是对文件/usr/local/google_appengine/google/appengine/tools/dev_appserver.py进行的。不幸的是,尽管它允许运行nose测试,但它破坏了应用程序,即我无法在SDK中运行应用程序。回到绘图板……我能够将问题追溯到NoseGAE如何设置路径(它将gae libs附加到路径,而实际上它需要进行预处理)。我在一个实验室里克隆了鼻猴;下载
nosegae-0.1.8-macos
在我的机器上是现成的。这就成功了!按照您的建议修改代码后,我可以运行nosetests——使用gae--gae lib root=/usr/local/google\u appengine,并查看testcase是否成功
    sudo port install python2.7
    /opt/local/bin/python2.7
import sys
sys.path.append('/usr/local/google_appengine/')
sys.path.append('/usr/local/google_appengine/lib')
sys.path.append('/usr/local/google_appengine/lib/yaml/lib/')
if 'google' in sys.modules:
    del sys.modules['google']
"""`appengine_config` gets loaded when starting a new application instance."""
import os
from google.appengine.ext import vendor
# insert `lib` as a site directory so our `main` module can load
# third-party libraries, and override built-ins with newer
# versions.
vendor.add(os.path.join(os.path.dirname(__file__), 'lib'))