2009-12-12 3 views
2

실제로 몇 가지 질문이 있습니다. 현재 내가하고있는 일에 대해 Django 1.1 및 Google App Engine을 사용하여 기본 이미지를 업로드하고 있습니다. 에 다음Google App Engine의 Django 양식이 모듈을 찾을 수 없습니다. PIL

class UploadPictureForm(forms.Form): 
    picture = forms.ImageField() 

그리고 제출, 나는 다음과 같은 코드가 있습니다 : 나는 PIL 설치 한

Exception Type: ImportError 
Exception Value: No module named PIL 
Exception Location:  /Library/Python/2.6/site-packages/django/forms/fields.py in clean, line 495 
Python Executable: /usr/bin/python2.6 
Python Version: 2.6.1 
Python Path: [..., '/Library/Python/2.6/site-packages', '/Library/Python/2.6/site-packages/PIL'] 

과 : 나는 다음과 같은 오류가

def handle_picture(request): 
    form = UploadPictureForm(request.POST, request.FILES) 

    if form.is_valid(): 
     save_picture(request.FILES['picture'] 

을 여기에 내 양식 클래스입니다 site-packages 디렉토리에 있고 명령 행에서 파이썬을 실행하면 import PIL과 함께 PIL을 가져올 수 있습니다.

그래서 질문 # 1이 작동하지 않는 이유는 무엇입니까? GAE가 작동하지 않도록하는 일을하고 있습니까? 두 번째로 GAE에 이미지 API가 있음을 알게되었습니다. 대신 그걸 사용해야합니까? 이 모든 것은 나에게 다소 새로운 것이다.

답변

3

처음에는 GAE와 Python 2.6을 함께 사용하지 마십시오. Google App Engine은 2.5를 염두에두고 만들어졌으며 일반적으로 2.6에서 여러 가지 방법으로 중단됩니다.

기타, GAE에서 PIL을 전혀 사용할 수 있는지 잘 모르겠습니다. 이것은 C 기반 라이브러리이므로 GAE (사용자 정의 패키지는 순수 Python 만 필요합니다)에 대해서는 no-no입니다 (이 문제는 a ticket도 있습니다).

그게 바로 images API을 위해 만들어진 것입니다. 백엔드로 PIL을 사용하지만 (적어도 사용자 측면에서는) 안전한 '하위 집합'을 제공합니다.

+0

이것은 모두 의미가 있습니다. 나는 2.5로 전환 할 의향이 있었지만 아직 기회가 없었습니다. PIL 사용에 관해서는 의미가 있습니다. Image API를 쉽게 사용할 수 있습니다. 놀라운 점은 모듈을 찾을 수 없다는 오류가 발생한다는 것입니다. GAE가 C 기반의 모듈을 무시한다는 아이디어가 있습니까? 여기 궁금해서 대답은 중요하지 않습니다. – Bialecki

+0

와우, 재미있는 이야기! 파이썬의 REPL에서'PIL을 가져올 수 있습니까? easy_install을 통해 PIL을 설치했는데 할 수 없었습니다! 그 때 나는 근원 및 빙고에서 모든 것을 재 컴파일했다! 이제 작동합니다. (두 경우 모두 'import image'이 완벽하게 작동했습니다.) –

0

전체 스택 추적을 표시 할 수 있습니까? 귀하가 제공 한 것에 따라 몇 가지 옵션이 있습니다 :

  1. 장고는 어떤 이유로 PIL을 직접 사용하려고합니다. App Engine에서는 PIL을 사용할 수 없으므로 App Engine에서는 작동하지 않으며 C 코드이기 때문에 업로드 할 수 없습니다.
  2. 고객님의 코드가 PIL을 직접 사용하려고합니다. 대신 이미지 API를 사용해야합니다.
  3. App Engine 프레임 워크가 PIL을 사용하려고하지만 찾을 수 없습니다. Images API의 로컬 스텁은 PIL을 사용하므로 코드에서이를 사용하려고하면 App Engine에서 PIL을 가져와야합니다.
0

More, I'm not quite sure you can use PIL at all with GAE. It's a C-based library and therefore it's a no-no for GAE (which requires custom packages to be pure-Python only) (there's even a ticket for this issue).

PIL은 모든 이미지 API 호출을 시뮬레이션하기 위해 로컬 개발 서버에서 사용됩니다. 당신은 찾을 수 있습니다 installation instructions here