我正在开发一个关于Elastic beanstalk的Django后端系统。
当我上传JPEG图像文件时,我收到错误decoder jpeg not available
。上传.png图像文件不会导致任何问题。
后端环境:
导致错误的源代码:
查看
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) + '/'
错误代码:
IO / at / requests / decoder jpeg not available请求方法:GET请求URL:
http://photoco-env-z5cnmns3pe.elasticbeanstalk.com/me/requests/ Django 版: 1.6.5异常类型:IOError异常值:解码器jpeg不可用异常位置: /opt/python/run/venv/lib/python2.7/site-packages/PIL/Image.py in _getdecoder,第413行Python可执行文件:/ opt / python / run / venv / bin / python Python版本: 2.7.5 Python路径:['/ opt / python / run / venv / lib / python2.7 / site-package', '/ 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:libjpeg-devel,zlib-devel,freetype-devel
然后制作符号链接
$ sudo ln -s /usr/lib64/libjpeg.so / usr / lib $ sudo ln -s /usr/lib64/zlib.so / usr / lib $ sudo ln -s /usr/lib64/freetype.so / usr / lib
答案 0 :(得分:2)
您可以添加名为" requirements.txt"的文件。在您的应用程序源中包含所有必需的依赖项,AWS Elastic Beanstalk将为您安装依赖项。
您可以使用ebextensions安装yum软件包。在您的应用源中创建一个名为.ebextensions/01-yum.config
的文件,并将以下内容放入其中。
packages:
yum:
libjpeg-devel: []
<another-package>: []
此文件采用YAML格式,因此缩进非常重要。
在此处阅读有关ebextensions的pacakges部分的更多信息:
这是一个关于在Elastic Beanstalk中使用requirements.txt的教程。
http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/create_deploy_python_console.html
答案 1 :(得分:0)
必须安装支持JPEG图像的依赖项 BEFORE 使用pip安装Pillow(用于解码图像的python库)。
所以你应该尝试:
卸载Pillow :
pip uninstall pillow
安装jpeg库:
yum install libjpeg-devel
重新安装枕头:
pip install pillow
答案 2 :(得分:0)
yum找不到libjpeg-devel。但这对我有用:
protocol Common { }
protocol Abc { }
protocol xyz: Common { }
protocol my: Common { }
extension Abc where Self: Common {
}
希望这有助于某人 干杯!