ModuleNotFoundError: No module named 'cv2.cv2' after changing `sys.path` - python

I have two python3 environments on my Ubuntu 18.04 machine.
The built-in Python environment at /usr/local/lib/python3.6/dist-packages/ and
Anaconda python3. Note: Opencv works perfectly in both of them.
The system I am building need to use sudo python3(/usr/local/lib/python3.6/dist-packages/) and python3(anaconda) at different times, but I want to minimize the dependency size for users. So what I am trying to do is that the dependencies will be installed in the built-in python3 only and when the program is called by normal python3 the script will set the sys.path to the sys.path of sudo python.(I have stored that path in a file at the installation time.)
But when I do that import cv2 raises: ModuleNotFoundError: No module named 'cv2.cv2'
Note: Other libraries works fine. Only Opencv is having this problem.

The correct way to do it was by installing OpenCV using sudo apt install python3-opencv. OpenCV installed with apt install can be used anywhere in your system whereas pip will only install OpenCV to a particular python environment.

Related

No module named 'cv2' even though it was successfully installed

I pip installed several packages (opencv, face_recognition, imutils)
They were all successfully installed, but are not recognized
I have a python script named script.py which imports cv2, but when I run it I get the following:
ModuleNotFoundError: No module named 'cv2'
I tried using pip list command to see the packages I have installed, but the packages I installed are not showing as you can see below.
I run pythonVersion.py to check my python version, it says it's using 3.8.2 which is where my packages are stored, as shown below.
I tried using #!/Users/Khuzama/opt/anaconda3/lib/python3.8 (the path of my packages) in my script, but still the same issue.
I am using jupyter notebook (anaconda navigator)
It is most probably the python environment you installed the packages are not the one you are currently referring to.
Try seeing the output of
which python
if this doesn't point to the anaconda one, then navigate to Users/Khuzama/opt/anaconda3/lib/python3.8 and run your script from there. Alternatively you can link the python from anaconda as the main python for your system

dlib fails on raspbian

I'm trying to install dlib on my raspbian and I am having a lot of problems. Well this is not real at all beacuse theoretically it's installed.
I have a virtual environment and it's installed with opencv-python, when i am in this virtual environment and I execute python if I write import dlib there is no problem. But if I run a .py file previously writted says the error
import dlib
ImportError: No module named 'dlib'
Why this is happening? I've been thinking maybe there is a conflict of versions, python2 or python3, but I don't know. In this case I'm using python 3.5.

ImportError: undefined symbol: _PyUnicodeUCS4_IsWhitespace

I am a python beginner and I would like some help with this. I am using Ubuntu and I had installed python using Anaconda, but then I tried to install it again using pip and now when I'm trying to run my code, at import numpy as np, I see this error
ImportError: /home/dev/.local/lib/python2.7/site-packages/numpy/core/multiarray.so: undefined symbol: _PyUnicodeUCS4_IsWhitespace
How can I fix this?
I also got this error. If you google for it, you will find lot's of similar issues. The problem can happen when you have multiple Python versions. In my case, I had the Ubuntu 16.04 Python 2.7 via /usr/bin/python and another Python 2.7 via Linuxbrew. type python gave me /u/zeyer/.linuxbrew/bin/python2, i.e. the Linuxbrew one. type pip2.7 gave me /u/zeyer/.local/bin/pip2.7, and looking into that file, it had the shebang #!/usr/bin/python, i.e. it was using the Ubuntu Python.
So, there are various solutions. You could just edit the pip2.7 file and change the shebang to #!/usr/bin/env python2.7. Or reinstall pip in some way.
In my case, I found that the Python 2.7 via Linuxbrew was incompatible to a few packages I needed (e.g. Tensorflow), so I unlinked it and use only the Ubuntu 16.04 Python 2.7 now.
Just uninstall numpy:
pip uninstall numpy
And reinstall numpy:
pip install numpy
Another thing you can do is run it on a virtual environment:
virtualenv myproject
cd myproject
source bin/activate
pip install numpy

Conflicts when installing Anaconda Python

I have recently installed the Anaconda distribution of Python. I then inserted the following line into my .bashrc file:
export PATH=/home/karnivaurus/Libraries/Anaconda/bin:$PATH
So, there are now two python binary files: one in /usr/bin/, and one in /home/karnivaurus/Libraries/Anaconda/bin.
I also have a python script, which attempts to import a module named caffe, with the line import caffe. Now, if I run python caffe from the terminal, the script runs fine. However, if I open the script in PyCharm, and set the interpreter to be /home/karnivaurus/Libraries/Anaconda/bin/python, I get the following error:
ImportError: No module named caffe
Based on all this, I have two questions....
If I run the python command from the terminal, which binary file would it execute? The one in /usr/bin, or the one in /home/karnivaurus/Libraries/Anaconda/bin? My intuition is that it runs the first one, due to the discrepancy in behaviour with PyCharm. In that case, how can I force my system to use the Anaconda version?
If I install a new package, for example pip install caffe, then where will it be installed to? Will it be installed to /usr/local/lib/python2.7/site-packages, or to /home/karnivaurus/Libraries/Anaconda/pkgs? How can I be sure that my python command will know where to find the new package?
Thank you!
Answer to 1:
Based on your example: export PATH=/home/karnivaurus/Libraries/Anaconda/bin:$PATH the /home/karnivaurus/Libraries/Anaconda/bin comes first, so the python from there should be the one to be executed.
But the definite answer depends on result of running: which python.
Answer to 2:
In Anaconda, use conda instead of pip to install packages. When you install using pip install caffe you'll be installing to /usr/local/lib/python2.7/site-packages.
Use conda install caffe to install to /home/karnivaurus/Libraries/Anaconda/pkgs.
Above two answers explain why even if you pip install spam package, python would say ImportError: No module named spam. Essentially you install to ordinary Python, but you attempt to import in Anaconda's python.

ImportError: No Module named picklefield.fields (Yep pip install says it is there)

I am using vagrant to run my python environment. In my data models I am using django-picklefield module.
when I run my server it says
ImportError: No module named picklefield.fields.
I tried to uninstall and install the picklefield module. Still having the same problem.
You should be able install via:
/[your python install directory]/bin/pip install django-picklefield
If you do this directly instead of a general pip call to install django-picklefield, that will ensure that it is installed on the correct version of Python.
Based on your description my best guess is that you have multiple versions of Python installed, and that your install/uninstall is happening on the wrong one.

Categories

Resources