Dưới đây là một số điều có thể giúp bạn nếu from PIL import Image
hoạt động nhưng import _imaging
không thành công. Nếu Image
cũng không thành công, hãy xem Lưu ý ở cuối.
Trên Ubuntu 13.04 (hiếm), tôi gặp sự cố này. Nó chỉ ra rằng Ubuntu cài đặt _imaging.so
ở một nơi mà App Engine không mong đợi: /usr/lib/python2.7/dist-packages
thay vì /usr/lib/python2.7/dist-packages/PIL
. Vì vậy, _imaging.so
không phải là bất cứ nơi nào trong sys.path
.
Dưới đây là một vài cách xung quanh này:
Đặt module PIL C ở đâu đó đã có trên đường dẫn:
tôi nhận thấy rằng /path/to/google_appengine/lib/PIL-1.1.7
là trong sys.path
, nhưng thư mục không tồn tại trong cài đặt của tôi . Vì vậy, tôi tạo ra các thư mục và sao chép các tập tin .so vào nó, và tất cả mọi thứ làm việc. Bạn sẽ phải làm điều này một lần nữa, mỗi lần bạn cập nhật App Engine SDK, nhưng ít nhất nó không gây rối với mã bạn đang phát triển.
Thao tác sys.path trong main.py
:
Mã này sẽ kiểm tra xem chúng ta đang chạy appserver dev, và nếu như vậy, thêm dir đúng con đường. Chưa được kiểm tra nhưng nó phải làm việc;)
# Find _imaging.so and put its directory here.
# `locate _imaging.so` or `dpkg -L python-imaging`
PIL_PATH = '/usr/lib/pyshared/python2.7/'
PRODUCTION_MODE = not os.environ.get(
'SERVER_SOFTWARE', 'Development').startswith('Development')
if not PRODUCTION_MODE:
sys.path.insert(PIL_PATH)
Tôi cho rằng điều này có thể làm nhiều hơn là chỉ các module PIL sẵn cho bạn, do đó sẽ giới thiệu (chưa nhiều) sự khác nhau giữa phát triển và sản xuất. Ngoài ra, kỹ thuật này liên quan đến việc sửa đổi mã nguồn của ứng dụng của bạn, có vẻ như một cuộc gọi không tốt nếu có nhiều người phát triển nó.
Note: Nếu import Image
thất bại, bạn có thể đã quên thêm thư viện PIL để app.yaml
của bạn.
libraries:
- name: PIL
version: "latest"
Bạn có thể cần phải khởi động lại dev_appserver.py
sau khi thêm thư viện này để thay đổi được phản ánh trong ví dụ: bảng điều khiển tương tác.
Tôi đã gặp phải vấn đề tương tự. Cài đặt sạch ** PIL 1.1.7 ** (hiện tại mới nhất) lên trên cài đặt sạch trên ** python 2.7.8 ** (hiện tại mới nhất) đã khắc phục được sự cố. Đảm bảo python 2.7 của bạn là ** 32 bit **. –