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包下完成这项工作