当前位置: 首页 > 知识库问答 >
问题:

“解码器jpeg不可用”与Django在弹性豆茎上

钱锦
2023-03-14

我正在弹性豆茎上开发一个Django后端系统。

当我上传JPEG图像文件时,我得到错误:解码器JPEG不可用。正在上载。png图像文件不会引起任何问题。

后端环境:

  • AWS beanstalk:64位Amazon Linux 2014.03 v1.0.4运行Python 2.7
  • python:2.7
  • pip包列表Django==1.6.5降价==2.4.1 MySQL python==1.2.5枕头==2.5.3 boto==2.30.0 Django过滤器==0.7 Django存储==1.1.8 djangorestframework==2.3.14 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) + '/'

错误代码:

IOError at/me/requests/decoder jpeg not available请求方法:获取请求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在_getdecoder中,第413行Python可执行文件:/opt/Python/run/venv/bin/Python Python版本:2.7.5 Python路径:['/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']

我试图解决这个问题:

>

  • 我通过SSH连接到豆茎服务器,并使用yum安装在库下面
  • 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

  • 共有3个答案

    温峻熙
    2023-03-14

    yum未能找到libjpeg-devel。但这对我来说很管用:

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

    希望这对别人有帮助<干杯!

    斜淳
    2023-03-14

    在安装pip(用于解码图像的python库)之前,必须先安装支持JPEG图像的依赖项。

    因此,您应该尝试:

    >

    pip卸载枕头

    安装jpeg库:

    yum安装libjpeg-devel

    重新安装枕头:

    pip安装枕

    符学
    2023-03-14

    您可以在您的应用源代码中包含一个名为“requirements.txt”的文件,其中包含所有必需的依赖项,AWS Elastic Beansta将为您安装依赖项。

    您可以使用ebextensions安装yum软件包。创建一个名为的文件。ebextensions/01 yum。在应用程序源代码中配置,并将以下内容放入其中。

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

    此文件为YAML格式,因此缩进很重要。

    请在此处阅读有关ebextensions的pacakges部分的更多信息:

    http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/customize-containers-ec2.html#customize-容器格式化包

    下面是关于使用需求的教程。txt与弹性豆茎。

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

     类似资料:
    • 我在AWS弹性豆茎下处理Python上的jpeg文件时遇到了一些麻烦。 我在.eb扩展/蟒蛇.config文件上有这个: 所以我相信我已经安装并运行了libjpeg(我试过libjpeg-devel,但是yum找不到这个包)。 另外,我requirements.txt: 所以我相信我已经安装了枕头,并在我的环境中工作。 然后,因为我有枕头和libjpeg,所以我尝试使用PIL做一些工作。在Pyth

    • 我可以用超文本传输协议浏览网站,但不能用https,我ChromeERR_CONNECTION_REFUSED。 我的环境是Nodejs(64bit AmazonLinux2015.09 v2.0)上的ExpresJS服务器,运行在Elastic Beanstalk上。我可以在端口80上telnet到EC2弹性公共IP,但在端口443上无法telnet,连接被拒绝。 设置 HTTPS 的步骤 >

    • 假设我在Wordpress中创建了一个站点,它运行在Elastic Beanstalk上。现在,在运行的应用程序上,我将创建帖子/页面,上传图像等。也就是说,数据库中的一些数据、视频、文件和记录将被添加到运行的应用程序中。 从我在AWS控制台中看到的情况来看,我可以部署一个应用程序的不同版本--但是根据上面的场景,如果我部署了一个新版本,我会不会丢失直接上传到正在运行的应用程序中的所有文件(即文件

    • 我在elastic beanstalk上使用django进行开发,我想对apache配置做两个更改: 1.将www.domain.com重定向到domain.com 2.将http://domain.com重定向到https://domain.com 有人知道如何在弹性豆茎中添加重写吗?

    • 配置验证异常:AWS Elastic Beanstatk无法与Amazon EC2通信以确定是否为Elastic Load均衡创建自定义安全组。 在创建AWS Elastic Beanstalk应用程序时,我在尝试继续“查看和启动”时遇到了这个错误。我是新手。请帮忙。

    • 有人知道是否有可能将现有的AWS弹性豆茎环境更改为应用程序负载平衡器(而不是经典的负载平衡器)。 据我所知,只有应用程序ELB可以被AWS WAF和DDOS“屏蔽”保护,所以任何现有的EB应用程序都不能利用这些特性,因为他们有经典的ELB。