Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/342.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 导入错误:无法导入名称\u图像_Python_Pip_Python Imaging Library_Imaging - Fatal编程技术网

Python 导入错误:无法导入名称\u图像

Python 导入错误:无法导入名称\u图像,python,pip,python-imaging-library,imaging,Python,Pip,Python Imaging Library,Imaging,我安装了枕头,然后我想执行以下操作: from PIL import Image 我得到以下错误: Traceback (most recent call last): File "<console>", line 1, in <module> File "/usr/local/lib/python2.7/dist-packages/PIL/Image.py", line 61, in <module> ImportError: cannot imp

我安装了
枕头
,然后我想执行以下操作:

from PIL import Image
我得到以下错误:

Traceback (most recent call last):
  File "<console>", line 1, in <module>
  File "/usr/local/lib/python2.7/dist-packages/PIL/Image.py", line 61, in <module>
ImportError: cannot import name _imaging

您知道问题可能出在哪里吗?

枕头工作PIL必须在
/usr/local/lib/python2.7或3/dist-packages/PIL.py

在dist包中,PIL.py应该有一个文件夹

  • sudo-apt-get-update
  • pip安装枕

  • PIL
    !=
    PiL

    我也遇到了这个问题。如果你安装了PIL,然后在上面安装枕头,可能会发生这种情况

    转到/usr/local/lib/python2.7/dist-packages/,删除名称中带有“PIL”的任何内容(包括目录)。如果枕头.egg文件在那里,你也可以删除它。 然后重新安装枕头


    用“python2.7”替换您正在使用的python版本。

    如果您在一个操作系统中构建了
    Pillow
    ,然后将
    站点包的内容复制到另一个操作系统中,也会发生这种情况。例如,如果您正在创建AWS Lambda部署包,则在运行Lambda函数时将遇到此错误。如果是这种情况,那么需要将Pillow安装在Amazon Linux实例中,并且您必须在部署包中使用生成的
    站点包。请参见此处的说明和详细信息:


    你的枕头是什么版本的


    枕头>=2.1.0不再支持
    import\u成像
    。请使用PIL中的
    。图像导入核心为_imaging

    我也遇到了同样的问题,所以我通过使用下面的命令更新这个包来解决这个问题:

    pip install -U Pillow
    

    我正在使用Flask和Google应用程序引擎。我通过以下命令安装了模块:

    pip install -t lib pillow
    
    我通过在app.yaml文件中定义PIL修复了此错误:

    libraries:
    - name: PIL
      version: latest
    

    当它试图部署lambda包时,我也遇到了同样的问题,问题是您必须预编译模拟将要使用的lambda体系结构/运行时的包,否则您将得到
    无法导入name\u imaging
    。解决此问题的两种方法:

    1-启动一个EC2 Amazon Linux实例(我将只介绍这一部分)

    2-使用码头工人


    短解
  • 在AmazonLinux2Intance中安装Python 3。(必须是您计划在lambda中使用的python3.X)
  • 在ec2用户主目录下安装虚拟环境
  • 激活环境,然后安装Boto 3
  • 安装枕头
  • 使用库的内容(PIL和Pillow.libs)创建一个ZIP存档
  • 将功能代码添加到存档中
  • 更新lambda的版本。(AWS CLI)

  • 长期解决方案
  • 如果尚未安装Python 3,请使用yum软件包管理器安装该软件包

    $sudo yum安装python3-y

  • 在ec2用户主目录下创建虚拟环境

    以下命令创建应用程序目录,其中包含虚拟环境。你可以将我的应用程序更改为其他名称。如果更改my_应用程序,请确保在其余解析步骤中引用新名称

    $python3-m venv my_app/env

  • 激活虚拟环境并安装Boto 3

    使用适当的权限策略将AWS标识和访问管理(IAM)角色附加到EC2实例,以便Boto 3可以与AWS API交互。对于其他身份验证方法……为了快速使用,您可以使用
    $aws confifure
    设置凭证(您将在步骤7中需要此设置)

  • 3.1通过在项目目录下的bin目录中寻找激活文件来激活环境

      `$ source ~/my_app/env/bin/activate`
    
    3.2。确保您的环境中安装了最新的pip模块。
    $pip安装pip--升级

    3.3使用pip命令在虚拟环境中安装Boto 3库

       `pip install boto3`
    
     `$ deactivate`
    
  • 使用pip安装库

    $pip安装枕头

  • 4.1停用虚拟环境

       `pip install boto3`
    
     `$ deactivate`
    
  • 使用库的内容创建ZIP存档

    将目录更改为安装pip的位置。它应该类似于/my_app/env/lib/python3.x/site-packages

  • 重要信息:这里的关键是将站点包中的文件压缩到 您的lambda。(我只使用PIL和枕头.libs来节省空间,但您可以 拉链(全部)

    5.1压缩PIL文件夹中的所有内容

       `zip -r9 PIL.zip ./PIL/`
    
       add the Pillow.libs to your ZIP
    
       `zip -gr PIL.zip Pillow.libs`
    
  • 将功能代码添加到存档中。 如果只是在代码文件中,您可以在控制台中执行此操作,但我建议在本步骤中执行此操作。如果您没有代码,只需使用vi或nano创建一个文件,并使用lambda处理程序将使用的名称保存它(在本例中,将使用lambda_function.py)

    zip-g PIL.zip lambda_function.py

  • 更新lambda的版本。(AWS CLI) 如果尚未创建lambda函数,请在从aws cli更新函数之前立即创建,确保您具有从aws cli更新lambda的正确权限

    将lambdFunctionName更改为函数名

    aws lambda更新函数代码--function name LAMBDAFUNCTIONNAME p--zip文件fileb://PIL.zip
  • 走出地狱的第一圈
    这可能是一个合适的解决方案,但我可以通过转到
    文件->设置->python解释器
    并单击枕头包旁边的升级符号来修复Pycharm上的这个问题。

    我在python 3.6中遇到了相同的错误。这是我的工作

    sudo python3.6 -m pip install Pillow --upgrade
    

    对于其他python版本,可能使用您的版本而不是3.6。

    顺便说一句,PIL确实有一个文件夹,在/usr/local/lib/python2.7/dist-packages/PIL导入PIL not import PIL.Dude下,正如我所说的,PIL是一个打字错误。最初我确实导入了PIL:D,但仍然不起作用。在我的Mac上尝试python3导入PILOn,我必须在
    /usr/local/lib/python2.7/site包下完成这项工作