我正在尝试使用tipfy和google app引擎运行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/文件夹中执行相同的命令,但得到了相同的结果
发布于 2011-04-01 00:19:37
我也遇到了同样的问题,下面是我的快速解决方案:
修改这个文件"/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-13 05:52:15
尝试使用以下选项运行它:
--gae-lib-root=/Applications/GoogleAppEngineLauncher.app/Contents/Resources/GoogleAppEngine-default.bundle/Contents/Resources/google_appengine请显示Python sys.path。
发布于 2011-03-16 01:31:38
我在使用Nose / NoseGAE时也遇到了这个问题。我没有机会尝试各种--gae-lib-root值,但我最终幸运地修补了dev_appserver.py (位于我的MacOS安装的/usr/local/google_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
...这与GAE issue ticket #3597中提到的appcfg.py (fix_sys_paths())中的一些代码非常相似。我怀疑问题在于Nose如何设置执行路径,尽管我目前无法证明这一点。
https://stackoverflow.com/questions/5210584
复制相似问题