Wyciągam włosy, próbując to zrozumieć, ponieważ pracowałem do zeszłego tygodnia i jakoś się zepsuło.Jak korzystać z virtualenv z pakietem SDK Google App Engine w systemie Mac OS X 10.6
Po skonfigurowaniu virtualenv dla aplikacji Google App Engine i uruchomieniu aplikacji pod numerem dev_appserver.py
, pojawiają się błędy podczas importowania biblioteki standardowej (np. "ImportError: No module named base64").
Oto co robię:
(Korzystanie z systemu Pythona)
virtualenv --python=python2.5 --no-site-packages ~/.virtualenv/foobar
Potem dodać do gae.pth
plik do ~/.virtualenv/foobar/lib/python2.5/site-packages/
zawierające Google App bibliotek silnika:
/usr/local/google_appengine
/usr/local/google_appengine/lib/antlr3
/usr/local/google_appengine/lib/cacerts
/usr/local/google_appengine/lib/django
/usr/local/google_appengine/lib/fancy_urllib
/usr/local/google_appengine/lib/ipaddr
/usr/local/google_appengine/lib/webob_1_1_1
/usr/local/google_appengine/lib/yaml/lib
(Oparte na this answer.)
Następnie źródła mojego "foobar" virtualenv i spróbuj uruchomić moją aplikację z dev_appserver.py
.
Serwer uruchamia się, ale pierwsze zgłoszenie błędu powoduje błąd z powodu wspomnianego "ImportError: Brak modułu o nazwie base64". Jeśli odwiedzę konsolę administracyjną, otrzymam "ImportError: No module named cgi".
Jeśli uruchomię pytona, będę mógł załadować te moduły.
>>> import base64
>>> base64.__file__
'/System/Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5/base64.py'
Wygląda na to, że piaskownica SDK uniemożliwia załadowanie tych bibliotek. Ale tak jak powiedziałem, pracowałem do zeszłego tygodnia ... coś się zmieniło albo przypadkowo złamałem moje virtualenv i nie mogę się zorientować, jak to działa.
wersje oprogramowania:
Google App Engine SDK 1.3.7
Mac OS X Snow Leopard 10.6.4
virtualenv 1.5.1
Aktualizacja: W odpowiedzi na pytania Alana FRANZONI za:
Używam systemu Python dostarczonego z systemem Mac OS X. Zainstalowałem virtualenv przez easy_install. Zaktualizowałem dzisiaj do wersji virtualenv 1.5.1, aby spróbować rozwiązać problem.
Jeśli uruchomię python /usr/local/bin/dev_appserver.py
z pythonem virtualenv, problem będzie nadal występował. Jeśli dezaktywuję virtualenv i uruchomię to polecenie w systemie python2.5, to działa. (. Również mogę używać GoogleAppEngineLauncher rozpocząć mój app)
Oto pełna ślad stosu (ta wykorzystuje ramy Kay, ale problem jest taki sam z webapp):
Traceback (most recent call last):
File "/Applications/GoogleAppEngineLauncher.app/Contents/Resources/GoogleAppEngine-default.bundle/Contents/Resources/google_appengine/google/appengine/tools/dev_appserver.py", line 3206, in _HandleRequest
self._Dispatch(dispatcher, self.rfile, outfile, env_dict)
File "/Applications/GoogleAppEngineLauncher.app/Contents/Resources/GoogleAppEngine-default.bundle/Contents/Resources/google_appengine/google/appengine/tools/dev_appserver.py", line 3149, in _Dispatch
base_env_dict=env_dict)
File "/Applications/GoogleAppEngineLauncher.app/Contents/Resources/GoogleAppEngine-default.bundle/Contents/Resources/google_appengine/google/appengine/tools/dev_appserver.py", line 525, in Dispatch
base_env_dict=base_env_dict)
File "/Applications/GoogleAppEngineLauncher.app/Contents/Resources/GoogleAppEngine-default.bundle/Contents/Resources/google_appengine/google/appengine/tools/dev_appserver.py", line 2402, in Dispatch
self._module_dict)
File "/Applications/GoogleAppEngineLauncher.app/Contents/Resources/GoogleAppEngine-default.bundle/Contents/Resources/google_appengine/google/appengine/tools/dev_appserver.py", line 2312, in ExecuteCGI
reset_modules = exec_script(handler_path, cgi_path, hook)
File "/Applications/GoogleAppEngineLauncher.app/Contents/Resources/GoogleAppEngine-default.bundle/Contents/Resources/google_appengine/google/appengine/tools/dev_appserver.py", line 2208, in ExecuteOrImportScript
exec module_code in script_module.__dict__
File "/Users/look/myapp/kay/main.py", line 17, in <module>
kay.setup()
File "/Users/look/myapp/kay/__init__.py", line 122, in setup
from google.appengine.ext import db
File "/Applications/GoogleAppEngineLauncher.app/Contents/Resources/GoogleAppEngine-default.bundle/Contents/Resources/google_appengine/google/appengine/tools/dev_appserver.py", line 1287, in Decorate
return func(self, *args, **kwargs)
File "/Applications/GoogleAppEngineLauncher.app/Contents/Resources/GoogleAppEngine-default.bundle/Contents/Resources/google_appengine/google/appengine/tools/dev_appserver.py", line 1937, in load_module
return self.FindAndLoadModule(submodule, fullname, search_path)
File "/Applications/GoogleAppEngineLauncher.app/Contents/Resources/GoogleAppEngine-default.bundle/Contents/Resources/google_appengine/google/appengine/tools/dev_appserver.py", line 1287, in Decorate
return func(self, *args, **kwargs)
File "/Applications/GoogleAppEngineLauncher.app/Contents/Resources/GoogleAppEngine-default.bundle/Contents/Resources/google_appengine/google/appengine/tools/dev_appserver.py", line 1839, in FindAndLoadModule
description)
File "/Applications/GoogleAppEngineLauncher.app/Contents/Resources/GoogleAppEngine-default.bundle/Contents/Resources/google_appengine/google/appengine/tools/dev_appserver.py", line 1287, in Decorate
return func(self, *args, **kwargs)
File "/Applications/GoogleAppEngineLauncher.app/Contents/Resources/GoogleAppEngine-default.bundle/Contents/Resources/google_appengine/google/appengine/tools/dev_appserver.py", line 1790, in LoadModuleRestricted
description)
File "/Applications/GoogleAppEngineLauncher.app/Contents/Resources/GoogleAppEngine-default.bundle/Contents/Resources/google_appengine/google/appengine/ext/db/__init__.py", line 81, in <module>
import base64
ImportError: No module named base64
Czy możesz wyciąć i wkleić pełne dane wyjściowe dla takiego błędu? Jeśli używasz "python /usr/local/bin/dev_appserver.py", czy błąd pozostaje taki sam? W jaki sposób zainstalowałeś virtualenv za pomocą setuptools? Czy używasz systemu python2.5, Macports One, jakiejkolwiek kombinacji tych? –
Dzięki za odpowiedź. Zaktualizowałem post, aby odpowiedzieć na Twoje pytania. –
Czy możesz wpisać "który python", aby upewnić się, że używasz Python virtualenv? – varikin