繁体   English   中英

如何修复从命令行导入的AWS EC2 Linux中的``没有名为cv2的模块''

[英]How to fix 'No module named cv2' in AWS EC2 Linux, imports from Command Line

我正在将Web应用程序部署到AWS EC2实例上,但出现错误。 日志表明我没有安装cv2。 ModuleNotFoundError: No module named 'cv2'

但是,如果我使用ssh进入实例,然后从外壳程序运行python,则可以导入,没有问题。

https://drive.google.com/drive/folders/1-w3BN9pMAhkiDM40fODCPdjvU1Nx71UT?usp=sharing

我已经在Linux服务器上安装了opencv,并检查了它是否可以导入。

从我的application.py文件

import cv2

File "/opt/python/current/app/localize.py", line 9, in 

但是从命令行:

>>> import cv2
>>> cv2.__version__
'4.1.0'

我希望导入能够正常工作,因为它可以从命令行运行。

正如@rayryeng所建议的,我正在从Elastic Beanstalk运行Python 3.x,从命令行运行Python2.x。 我通过在Python 3上安装正确版本的cv2并在导入之前包含以下内容来修复此问题:

import sys

sys.path.append('/usr/local/lib64/python3.6/site-packages')

尝试这个:

cd 
wget https://github.com/opencv/opencv/archive/3.2.0.zip
virtualenv project
source project/bin/activate
pip install numpy
mkdir local
unzip opencv-3.2.0.zip
cd opencv-3.2.0
mkdir build
cd build
cmake -D CMAKE_BUILD_TYPE=RELEASE -D BUILD_SHARED_LIBS=NO -D WITH_FFMPEG=ON -D BUILD_opencv_python2=ON -D CMAKE_INSTALL_PREFIX=~/local ~/opencv-3.2.0
make
make install
cp ~/local/lib/python2.7/site-packages/cv2.so ~/project/lib64/python2.7/site-packages/

从此处了解更多信息: 来源

检查您的python软件包是否对root / admin用户可用,但对于尝试运行代码的用户不可用? 如果可以在EC2中导入该模块,则说明已安装该模块,但更重要的是,该模块针对的是哪个用户以及哪个版本。 首先尝试:在默认默认python路径的python路径上的所有目录上使用chmod 755,看看它是否有效。(这将为Python中的所有导入库提供权限)如果脚本运行的是Python3.7,而默认值为Python2.7,则可能必须做的-sudo pip3 install opencv-python

检查版本默认值的方法是:

which python ---Will provide default python path and version

which pip ---- Will Provide default PIP details

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM