2014-09-03 2 views
2

나는 Elastic beanstalk에서 Django 백엔드 시스템을 개발 중입니다.Django with Elastic beanstalk

JPEG 이미지 파일을 업로드 할 때 decoder jpeg not available 오류가 발생합니다. .png 이미지 파일을 업로드해도 문제가 발생하지 않습니다.

백엔드 환경 :

  • AWS의 콩나무 : 64 비트 아마존 리눅스 파이썬 2.7을 실행 2014.03 v1.0.4
  • 파이썬 : 2.7
  • 핍 패키지 목록 장고 == 1.6.5 마크 다운의 == 2.4 0.1 MySQL을 파이썬 == 1.2.5 베개 == 2.5.3 BOTO의 == 2.30.0 장고 필터 == 0.7 장고 창고의 == 1.1.8 djangorestframework의 2.3.14 == 01 23,516,wsgiref == 0.1.2

소스 코드 일으키는 오류 :

보기

normalImage = NormalImage(image=image, userProfile=request.user.profile, category = category) 
normalImage.save() 

모델

class NormalImage(models.Model): 
    userProfile = models.ForeignKey(UserProfile) 
    height = models.PositiveIntegerField(editable=False) 
    width = models.PositiveIntegerField(editable=False) 
    image = models.ImageField(upload_to=rename_image_file, width_field='width', height_field='height') 
    size = models.TextField() 
    price = models.PositiveIntegerField() 
    tags = models.ManyToManyField(Tag) 
    category = models.ForeignKey(Category) 
    created_datetime = models.DateTimeField(auto_now_add=True) 

def __init__(self, *args, **kwargs): 
    super(NormalImage,self).__init__(*args, **kwargs) 
    if not self.id: 
     self.size = Size.determineSizeDescription(anWidth=self.width, aHeight=self.height) 
     self.price = Size.determinePrice(anWidth=self.width, aHeight=self.height) 

def get_created_datetime_str(self): 
    return self.created_datetime.strftime('%Y-%m-%d %H:%M:%S') 

def get_image_url(self): 
    return 'http://photocoapi-env-x2ezvferc7.elasticbeanstalk.com/images/' + str(self.id) + '/' 

오류 코드 :

,691,363 (210)

IOError at /me/requests/ decoder jpeg not available Request Method: GET Request URL:
http://photoco-env-z5cnmns3pe.elasticbeanstalk.com/me/requests/ Django Version: 1.6.5 Exception Type: IOError Exception Value: decoder jpeg not available Exception Location: /opt/python/run/venv/lib/python2.7/site-packages/PIL/Image.py in _getdecoder, line 413 Python Executable: /opt/python/run/venv/bin/python Python Version: 2.7.5 Python Path: ['/opt/python/run/venv/lib/python2.7/site-packages', '/opt/python/current/app', '/opt/python/bundle/4/app', '/opt/python/run/baselinenv/lib64/python27.zip', '/opt/python/run/baselinenv/lib64/python2.7', '/opt/python/run/baselinenv/lib64/python2.7/plat-linux2', '/opt/python/run/baselinenv/lib64/python2.7/lib-tk', '/opt/python/run/baselinenv/lib64/python2.7/lib-old', '/opt/python/run/baselinenv/lib64/python2.7/lib-dynload', '/usr/lib64/python2.7', '/usr/lib/python2.7', '/opt/python/run/baselinenv/lib/python2.7/site-packages']

나는이 문제를 해결하기 위해 노력했습니다 무엇 :

  • 내가 냠
  • yum을 사용하여 SSH를 통해 서버와 라이브러리 아래에 설치를 콩나무에 연결 : libjpeg-(STABLE), ZLIB-(STABLE)을, 심볼릭 링크 만들기 다음

    • 을 (STABLE) - FREETYPE 및

      $ sudo를 에선 -s는/usr/lib6 4/libjpeg.so는/usr/lib에 $ sudo를 에선 -s /usr/lib64/zlib.so는/usr/lib에 $ sudo를 에선 -s /usr/lib64/freetype.so는/usr/

  • LIB

답변

0

JPEG 이미지를 지원하는 종속성이 설치되어 있어야합니다. BEFORE에서는 pill (이미지 디코딩에 사용되는 파이썬 라이브러리)을 설치합니다.

pip uninstall pillow

  • 은 JPEG 라이브러리를를 설치 :

    • 제거 베개 :

      그래서 당신은에 시도해야

      yum install libjpeg-devel

    • 다시 설치 베개 :

      pip install pillow

  • +0

    먼저, 답변 해 주셔서 감사합니다. 나는 실제로 이것을 여러 번했다. 나는 베개를 제거하고 libjpeg/베개를 다시 설치하려고했지만 동일했습니다. 그래서 AWS beanstalk의 일부 속성을 놓쳤는 지 여부에 대해이 질문을 썼습니다. 예를 들어, 지금 사용하고있는 Amazon Linux는 다른 Linux 시스템과 비교하여 이러한 패키지를 정상적으로 지원하지 않습니다. – user2990490

    +0

    확인. 죄송하지만 AWS beanstalk에 대한 경험이 없습니다. 'python-devel'yum 패키지를 설치 했습니까? setup.cfg를 편집하여 jpeg 라이브러리 위치를 지정하고 "python setup.py install"을 수동으로 실행하여 베개를 설치하십시오 (http://pillow.readthedocs.org/en/latest/installation.html# 간단한 설치) – pchiquet

    2

    할 수 있습니다에 대한 종속성을 설치합니다 필요한 모든 종속성 및 AWS 탄성 콩 줄기와 앱 소스에 "requirements.txt"라는 파일을 포함 당신.

    eb 확장자를 사용하여 yum 패키지를 설치할 수 있습니다. 앱 소스에 .ebextensions/01-yum.config이라는 파일을 만들고 다음 내용을 입력하십시오.

    packages: 
        yum: 
        libjpeg-devel: [] 
        <another-package>: [] 
    

    이 파일은 들여 쓰기가 중요하므로 YAML 형식입니다.

    여기 ebextensions의 pacakges 섹션에 대한 자세한 내용 :

    여기

    http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/customize-containers-ec2.html#customize-containers-format-packages

    는 탄성 콩 줄기와 requirements.txt를 사용하는 방법에 대한 튜토리얼입니다.

    http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/create_deploy_python_console.html

    +0

    동일한 문제가 있으며 ebextension을 추가해도 문제가 해결되지 않았습니다. 내 로그에 yum에 libjpeg가 설치 되었음이 표시됩니다. Sep 30 19:00:27 libjpeg-turbo-1.2.1-3.3.amzn1.x86_64 Sep 30 19:00:27 설치 : libjpeg-turbo-devel-1.2. 1-3.3.amzn1.x86_64 –

    0

    얌 libjpeg-(STABLE)을 찾을 수 없습니다. 그러나 이것은 나를 위해 일했다 :

    packages: 
        yum: 
        libjpeg-turbo-devel: [] 
    

    희망이 사람을 돕는다.
    건배!