4

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

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

nosetests /Users/me/Documents/python/project/ --with-gae --without-sandbox

但我收到以下错误:

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

我可以毫无错误地加载tipfy hello_world 项目,并且我在同一台机器上还有其他应用程序引擎项目,都运行良好。

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

4

6 回答 6

3

我有同样的问题,这是我的快速修复:

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

......
if version_tuple == (2, 4):
  sys.stderr.write('Warning: Python 2.4 is not supported; this program may '
                   'break. Please use version 2.5 or greater.\n')
#Start Change
#DIR_PATH = os.path.abspath(os.path.dirname(os.path.realpath(__file__)))
DIR_PATH = "/usr/local/google_appengine"
#End Change

SCRIPT_DIR = os.path.join(DIR_PATH, 'google', 'appengine', 'tools')
......

到目前为止为我工作。

于 2011-03-31T16:19:37.370 回答
1

尝试使用选项运行它:

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

请显示 Python sys.path。

于 2011-03-12T21:52:15.190 回答
0

我也使用 Nose / NoseGAE 遇到了这个问题。我尝试各种值都没有运气--gae-lib-root,但我最终还是成功地修补dev_appserver.py了(位于/usr/local/google_appengine/google/appengine/tools/我的 MacOS 安装中),如下所示:

...
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
...

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

于 2011-03-15T17:31:38.100 回答
0

事实证明,这是因为您在 GoogleAppengineLuncher 的首选项中设置“Python 路径”时出现了一个 UI 错误。它需要一个 Enter 来确认设置:

    sudo port install python2.7

然后将“Python路径”设置为

    /opt/local/bin/python2.7

输入确认

看这里

于 2012-04-19T15:27:12.643 回答
0

如果您正在运行独立脚本,那么在使用任何 appengine 东西之前,您必须链接到 dirs

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-02-28T16:36:38.170 回答
0

如今(2016 年)GAE Python 建议将项目库加载到名为“appengine_config.py”的根级别的文件中。

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

"""`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'))

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

IDE 设置

希望以上内容可以帮助一些 Python GAE 开发人员,因为我在让 NoseGAE 简单设置工作时遇到了一些挑战。小心!

于 2016-07-28T23:05:50.150 回答