Tôi đang kéo tóc ra để cố gắng tìm ra điều này vì tôi đã làm việc đó cho đến tuần trước và bằng cách nào đó nó đã bị hỏng.Cách sử dụng virtualenv với Google App Engine SDK trên Mac OS X 10.6
Khi tôi thiết lập virtualenv cho ứng dụng Google App Engine và khởi động ứng dụng với dev_appserver.py
, tôi gặp lỗi khi nhập thư viện chuẩn (như "ImportError: No module named base64").
Đây là những gì tôi đang làm:
(Sử dụng hệ thống Python)
virtualenv --python=python2.5 --no-site-packages ~/.virtualenv/foobar
Sau đó, tôi thêm một gae.pth
tập tin để ~/.virtualenv/foobar/lib/python2.5/site-packages/
chứa Engine thư viện Google App:
/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
(Đó là dựa trên this answer.)
Sau đó, tôi tìm nguồn ảo "foobar" và cố gắng khởi động ứng dụng của mình với dev_appserver.py
.
Máy chủ khởi động nhưng lỗi yêu cầu đầu tiên với "ImportError: No module named base64" nói trên. Nếu tôi truy cập vào bảng điều khiển quản trị, tôi nhận được "ImportError: No module named cgi".
Nếu tôi khởi động python, tôi có thể tải các mô-đun này.
>>> import base64
>>> base64.__file__
'/System/Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5/base64.py'
Dường như hộp cát của SDK đang ngăn các thư viện này được tải. Nhưng như tôi đã nói, tôi đã làm việc này cho đến tuần trước ... một cái gì đó thay đổi hoặc tôi vô tình phá vỡ virtualenv của tôi và tôi không thể hiểu làm thế nào tôi đã nhận nó làm việc ở nơi đầu tiên.
phiên bản phần mềm:
Google App Engine SDK 1.3.7
Mac OS X Snow Leopard 10.6.4
virtualenv 1.5.1
Cập nhật: Đáp lại câu hỏi Alan FRANZONI của:
Tôi đang sử dụng hệ thống Python đi kèm với Mac OS X. Tôi đã cài đặt virtualenv qua easy_install. Tôi đã nâng cấp lên virtualenv 1.5.1 hôm nay để cố khắc phục sự cố.
Nếu tôi chạy python /usr/local/bin/dev_appserver.py
với virtualenv python, sự cố vẫn tiếp diễn. Nếu tôi tắt virtualenv và chạy lệnh đó với hệ thống python2.5, nó hoạt động. (. Ngoài ra, tôi có thể sử dụng GoogleAppEngineLauncher để bắt đầu ứng dụng của tôi)
Đây là một vết đống đầy đủ (cái này sử dụng khuôn khổ Kay, nhưng vấn đề là như nhau với 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
Bạn có thể cắt và dán toàn bộ đầu ra cho lỗi đó không? Nếu bạn sử dụng "python /usr/local/bin/dev_appserver.py" thì lỗi có giữ nguyên không? Ngoài ra, làm thế nào bạn cài đặt virtualenv, thông qua setuptools? Và bạn đang sử dụng hệ thống python2.5, macports một, bất kỳ kết hợp của những người? –
Cảm ơn bạn đã trả lời. Tôi đã cập nhật bài đăng để trả lời câu hỏi của bạn. –
Bạn có thể nhập "con trăn" nào để đảm bảo bạn đang chạy virtualenv Python không? – varikin