tipfy nosetest ImportError: Нет модуля с именем fancy_urllib - PullRequest
4 голосов
/ 06 марта 2011

Я пытаюсь запустить тестирование носа, используя tipfy и google app engine, но получаю сообщение об ошибке импорта:

Из каталога 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 и у меня установлены нос и носа. Я также пытался выполнить ту же команду из папки / Users / me / Documents / python / project /, но получил тот же результат

Ответы [ 6 ]

3 голосов
/ 31 марта 2011

У меня была такая же проблема, и вот мое быстрое решение:

Изменить этот файл "/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')
......

Пока у меня работает.

1 голос
/ 13 марта 2011

Попробуйте запустить его с параметром:

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

и покажите Python sys.path.

0 голосов
/ 29 июля 2016

В настоящее время (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 Settings

Надеюсь, что вышесказанное может помочь некоторым разработчикам Python GAE, поскольку у меня были некоторые проблемы с настройкой простой настройки NoseGAE. Береги себя!

0 голосов
/ 28 февраля 2016

Если вы запускаете автономные скрипты, то перед тем, как использовать какие-либо вещи из 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']
0 голосов
/ 19 апреля 2012

Оказывается, это из-за ошибки пользовательского интерфейса, когда вы устанавливаете «Python Path» в настройках GoogleAppengineLuncher.Для подтверждения настройки требуется Enter:

    sudo port install python2.7

Затем установите «Python Path» на

    /opt/local/bin/python2.7

Enter для подтверждения

Смотрите здесь

0 голосов
/ 15 марта 2011

Я также столкнулся с этой проблемой, используя 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
...

Это близко следует некоторому кодув appcfg.py (fix_sys_paths()), указанном в заявке на выдачу GAE # 3597 .Я подозреваю, что проблема заключается в том, как Nose устанавливает путь выполнения, хотя я не могу доказать это в данный момент.

...