Related
Code:
import numpy as np
import cv
Console:
>>> runfile('/Users/isaiahnields/.spyder2/temp.py', wdir='/Users/isaiahnields/.spyder2')
RuntimeError: module compiled against API version a but this version of numpy is 9
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/Applications/Spyder-Py2.app/Contents/Resources/lib/python2.7/spyderlib/widgets/externalshell/sitecustomize.py", line 685, in runfile
execfile(filename, namespace)
File "/Applications/Spyder-Py2.app/Contents/Resources/lib/python2.7/spyderlib/widgets/externalshell/sitecustomize.py", line 78, in execfile
builtins.execfile(filename, *where)
File "/Users/isaiahnields/.spyder2/temp.py", line 9, in <module>
import cv
File "/Applications/Spyder-Py2.app/Contents/Resources/lib/python2.7/cv.py", line 1, in <module>
from cv2.cv import *
ImportError: numpy.core.multiarray failed to import
>>>
System Info: OS X El Capitan, Macbook Air, 1.3 GHz Intel Core i5, 8 GB 1600 HMz DDR3
I have already attempted updating numpy. I had to add cv.py to the python2.7 folder in Spyder-Py2 is there something else I need to add?
Upgrade numpy to the latest version
pip install numpy --upgrade
Check the path
import numpy
print numpy.__path__
For me this was /System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/numpy So I moved it to a temporary place
sudo mv /System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/numpy \
/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/numpy_old
and then the next time I imported numpy the path was /Library/Python/2.7/site-packages/numpy/init.pyc and all was well.
This worked for me:
sudo pip install numpy --upgrade --ignore-installed
You are likely running the Mac default (/usr/bin/python) which has an older version of numpy installed in the system folders. The easiest way to get python working with opencv is to use brew to install both python and opencv into /usr/local and run the /usr/local/bin/python.
brew install python
brew tap homebrew/science
brew install opencv
I ran into the same issue tonight. It turned out to be a problem where I had multiple numpy packages installed. An older version was installed in /usr/lib/python2.7 and the correct version was installed in /usr/local/lib/python2.7.
Additionally, I had PYTHONPATH=/usr/lib/python2.7/dist-packages:/usr/local/lib/python2.7/dist-packages. PYTHONPATH was finding the older version of numpy before the correct version, so when inside the Python interpreter, it would import the older version of numpy.
One thing which helped was opening a python session an executing the following code:
import numpy as np
print np.__version__
print np.__path__
That should tell you exactly which version Python is using, and where it's installed.
To fix the issue, I changed PYTHONPATH=/usr/local/lib/python2.7/dist-packages:/usr/lib/python2.7/dist-packages. And I also setup a virtual Python environment using the Hitchiker's Guide to Python, specifically the section titled "Lower level: virtualenv" . I know I should have setup a virtual environment in the first place, but I was tired and being lazy. Oh well, lesson learned!
(Update)
Just in case the docs are moved again, here are the relevant bits on...
Creating a Python Virtual Environment
Install virtualenv via pip:
$ install virtualenv
Test the installation:
$ virtualenv --version
Optionally, et the environment variable VIRTUALENVWRAPPER_PYTHON to change the default version of python used by virtual environments, for example to use Python 3:
$ export VIRTUALENVWRAPPER_PYTHON=$(which python3)
Optionally, set the environment variable WORKON_HOME to change the default directory your Python virtual environments are created in, for example to use /opt/python_envs:
$ export WORKON_HOME=/opt/python_envs
Create a virtual environment for a project:
$ cd my_project_folder
$ virtualenv my_virtual_env_name
Activate the virtual environment, you just created. Assuming you also set WORKON_HOME=/opt/python_envs:
$ source $WORKON_HOME/my_virtual_env_name/bin/activate
Install whatever Python packages your project requires, using either of the following two methods.
Method 1 - Install using pip from command line:
$ pip install python_package_name1
$ pip install python_package_name2
Method 2 - Install using a requests.txt file:
$ echo "python_package_name1" >> requests.txt
$ echo "python_package_name2" >> requests.txt
$ pip install -r ./requests.txt
Optionally, but highly recommended, install virtualenvwrapper. It contains useful commands to make working with virtual Python environments easier:
$ pip install virtualenvwrapper
$ source /usr/local/bin/virtualenvwrapper.sh
On Windows, install virtualenvwrapper using:
$ pip install virtualenvwrapper-win
Basic usage of virtualenvwrapper
Create a new virtual environment:
$ mkvirtualenv my_virtual_env_name
List all virtual environments:
$ lsvirtualenv
Activate a virtual environment:
$ workon my_virtual_env_name
Delete a virtual environment (caution! this is irreversible!):
$ rmvirtualenv my_virtual_env_name
I hope this help!
To solve the problem do following:
First uninstall numpy
sudo pip uninstall numpy
Install numpy with --no-cache-dir option
sudo pip install --no-cache-dir numpy
And to specify any specific version e.g. 1.14.2
sudo pip install --no-cache-dir numpy==1.14.2
This command solved my problem.
pip3 install --upgrade numpy
upgrading numpy to rescue
numpy official document suggests users to do upgrade to solve this issue [1].
pip install numpy --upgrade
which version of numpy should I upgrade to
But you may upgrade to a version that is too new/old for your environment. I spent a long time trying to figure out which version of numpy is expected to be upgraded to when running into this error, and here is a list [2] of numpy versions with their corresponding C API versions, which may be useful for troubleshooting such an issue:
# 0x00000008 - 1.7.x
# 0x00000009 - 1.8.x
# 0x00000009 - 1.9.x
# 0x0000000a - 1.10.x
# 0x0000000a - 1.11.x
# 0x0000000a - 1.12.x
# 0x0000000b - 1.13.x
# 0x0000000c - 1.14.x
# 0x0000000c - 1.15.x
# 0x0000000d - 1.16.x
# 0x0000000d - 1.19.x
# 0x0000000e - 1.20.x
# 0x0000000e - 1.21.x
# 0x0000000f - 1.22.x
# 0x00000010 - 1.23.x
# 0x00000010 - 1.24.x
You can find the list here [2].
And the C API VERSION in numpy is tracked in three places according to [3]:
numpy/core/setup_common.py
numpy/core/code_generators/cversions.txt
numpy/core/include/numpy/numpyconfig.h
The error is reported by numpy's source code here [4]
references
[1] https://numpy.org/devdocs/user/troubleshooting-importerror.html#c-api-incompatibility
[2] https://github.com/numpy/numpy/blob/main/numpy/core/setup_common.py
[3] https://numpy.org/doc/stable/dev/releasing.html#check-the-c-api-version-number
[4] https://github.com/numpy/numpy/blob/bdec32181605c8179fd79624d14c1cf019de75af/numpy/core/code_generators/generate_numpy_api.py#L79
I got the same issue with quaternion module. When updating modules with conda, the numpy version is not up^dated to the last one. If forcing update with pip command pip install --upgrade numpy + install quaternion module by pip install --user numpy numpy-quaternion, the issue is fixed.
May be the issue is coming from the numpy version.
Here the execution result:
Python 2.7.14 |Anaconda custom (64-bit)| (default, Oct 15 2017, 03:34:40) [MSC v.1500 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import numpy as np
>>> print np.__version__
1.14.3
>>>
(base) C:\Users\jc>pip install --user numpy numpy-quaternion
Requirement already satisfied: numpy in d:\programdata\anaconda2\lib\site-packages (1.14.3)
Collecting numpy-quaternion
Downloading https://files.pythonhosted.org/packages/3e/73/5720d1d0a95bc2d4af2f7326280172bd255db2e8e56f6fbe81933aa00006/numpy_quaternion-2018.5.10.13.50.12-cp27-cp27m-win_amd64.whl (49kB)
100% |################################| 51kB 581kB/s
Installing collected packages: numpy-quaternion
Successfully installed numpy-quaternion-2018.5.10.13.50.12
(base) C:\Users\jc>python
Python 2.7.14 |Anaconda custom (64-bit)| (default, Oct 15 2017, 03:34:40) [MSC v.1500 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import numpy as np
>>> import quaternion
>>>
I faced the same problem due to documentation inconsistencies.
This page says the examples in the docs work best with python 3.x: https://opencv-python-tutroals.readthedocs.io/en/latest/py_tutorials/py_setup/py_intro/py_intro.html#intro , whereas this installation page has links to python 2.7, and older versions of numpy and matplotlib: https://opencv-python-tutroals.readthedocs.io/en/latest/py_tutorials/py_setup/py_setup_in_windows/py_setup_in_windows.html
My setup was as such: I already had Python 3.6 and 3.5 installed, but since OpenCv-python docs said it works best with 2.7.x, I also installed that version. After I installed numpy (in Python27 directory, without pip but with the default extractor, since pip is not part of the default python 2.7 installation like it is in 3.6), I ran in this RuntimeError: module compiled against API version a but this version of numpy is error. I tried many different versions of both numpy and opencv, but to no avail. Lastly, I simply deleted numpy from python27 (just delete the folder in site-packages as well as any other remaining numpy-named files), and installed the latest versions of numpy, matplotlib, and opencv in the Python3.6 version using pip no problem. Been running opencv ever since.
Hope this saves somebody some time.
When all else fail, check with the following script and disable unwanted python import path(s), or upgrade the package on those paths:
python ./test.py
test.py content:
import numpy as np
print(f'numpy version:{np.__version__}')
import sys
from pprint import pprint
pprint(sys.path)
import tensorflow as tf
print(f'TensorFlow version: {tf.__version__}')
For my case, it was the outdated conda version in ~/.local/lib/python3.8/site-packages that was messing things up :(
For those using anaconda Python:
conda update anaconda
You might want to check your matplotlib version.
Somehow I installed a dev version of matplotlib which caused the issue. A downgrade to stable release fixed it.
One can also can try python -v -c 'import YOUR_PACKAGE' 2>&1 | less to see where the issue occurred and if the lines above error can give you some hints.
You may also want to check your $PYTHONPATH. I had changed mine in ~/.bashrc in order to get another package to work.
To check your path:
echo $PYTHONPATH
To change your path (I use nano but you could edit another way)
nano ~/.bashrc
Look for the line with export PYTHONPATH ...
After making changes, don't forget to
source ~/.bashrc
I had the same error when trying to launch spyder. "RuntimeError: module compiled against API version 0xb but this version of numpy is 0xa".
This error appeared once I modified the numpy version of my machine by mistake (I thought I was in a venv). If your are using spyder installed with conda, my advice is to only use conda to manage package.
This works for me:
conda install anaconda
(I had conda but no anaconda on my machine)
then:
conda update numpy
The below command worked for me :
conda install -c anaconda numpy
Although this question is very old, but I do believe there are still many facing similar problem as I did. I encountered the above reported error when I used Python3 in a Raspberry Pi micro-computer, which is running on Raspberry Pi OS.
This is perhaps due to missing some libraries when installed the Numpy module. I solved this problem following the suggestion in the Numpy website.
Solutions for Numpy Module Import Error
This Numpy troubleshooting website is really informative and provides cross-platform solutions for Windows, Anaconda, Raspberry, etc. Perhaps, someone can first follow the suggestion in this Numpy official website in order to solve the error.
I had same issue when I used import pyopencl and I did not want to upgrade numpy cause tensorflow requires old version of numpy so I solved it by simply:
python -m pip uninstall pyopencl && python -m pip install pyopencl
This way pyopencl was configured with existing numpy version and error solved.
I suffered with this problem for a long time, firstly you have to upgrade numby then try this code :
import numpy as np
print np.__version__
if gives you different version from the new one , uninstall the numpy(the new version) and use this
print numpy.__path__
go to that old numpy and delete the file , then install new version again
This works for me:
My pip is not work after upgrade, so the first thing I need to do is to fix it with
sudo gedit /usr/bin/pip
Change the line
from pip import main
to
from pip._internal import main
Then,
sudo pip install -U numpy
Code:
import numpy as np
import cv
Console:
>>> runfile('/Users/isaiahnields/.spyder2/temp.py', wdir='/Users/isaiahnields/.spyder2')
RuntimeError: module compiled against API version a but this version of numpy is 9
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/Applications/Spyder-Py2.app/Contents/Resources/lib/python2.7/spyderlib/widgets/externalshell/sitecustomize.py", line 685, in runfile
execfile(filename, namespace)
File "/Applications/Spyder-Py2.app/Contents/Resources/lib/python2.7/spyderlib/widgets/externalshell/sitecustomize.py", line 78, in execfile
builtins.execfile(filename, *where)
File "/Users/isaiahnields/.spyder2/temp.py", line 9, in <module>
import cv
File "/Applications/Spyder-Py2.app/Contents/Resources/lib/python2.7/cv.py", line 1, in <module>
from cv2.cv import *
ImportError: numpy.core.multiarray failed to import
>>>
System Info: OS X El Capitan, Macbook Air, 1.3 GHz Intel Core i5, 8 GB 1600 HMz DDR3
I have already attempted updating numpy. I had to add cv.py to the python2.7 folder in Spyder-Py2 is there something else I need to add?
Upgrade numpy to the latest version
pip install numpy --upgrade
Check the path
import numpy
print numpy.__path__
For me this was /System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/numpy So I moved it to a temporary place
sudo mv /System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/numpy \
/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/numpy_old
and then the next time I imported numpy the path was /Library/Python/2.7/site-packages/numpy/init.pyc and all was well.
This worked for me:
sudo pip install numpy --upgrade --ignore-installed
You are likely running the Mac default (/usr/bin/python) which has an older version of numpy installed in the system folders. The easiest way to get python working with opencv is to use brew to install both python and opencv into /usr/local and run the /usr/local/bin/python.
brew install python
brew tap homebrew/science
brew install opencv
I ran into the same issue tonight. It turned out to be a problem where I had multiple numpy packages installed. An older version was installed in /usr/lib/python2.7 and the correct version was installed in /usr/local/lib/python2.7.
Additionally, I had PYTHONPATH=/usr/lib/python2.7/dist-packages:/usr/local/lib/python2.7/dist-packages. PYTHONPATH was finding the older version of numpy before the correct version, so when inside the Python interpreter, it would import the older version of numpy.
One thing which helped was opening a python session an executing the following code:
import numpy as np
print np.__version__
print np.__path__
That should tell you exactly which version Python is using, and where it's installed.
To fix the issue, I changed PYTHONPATH=/usr/local/lib/python2.7/dist-packages:/usr/lib/python2.7/dist-packages. And I also setup a virtual Python environment using the Hitchiker's Guide to Python, specifically the section titled "Lower level: virtualenv" . I know I should have setup a virtual environment in the first place, but I was tired and being lazy. Oh well, lesson learned!
(Update)
Just in case the docs are moved again, here are the relevant bits on...
Creating a Python Virtual Environment
Install virtualenv via pip:
$ install virtualenv
Test the installation:
$ virtualenv --version
Optionally, et the environment variable VIRTUALENVWRAPPER_PYTHON to change the default version of python used by virtual environments, for example to use Python 3:
$ export VIRTUALENVWRAPPER_PYTHON=$(which python3)
Optionally, set the environment variable WORKON_HOME to change the default directory your Python virtual environments are created in, for example to use /opt/python_envs:
$ export WORKON_HOME=/opt/python_envs
Create a virtual environment for a project:
$ cd my_project_folder
$ virtualenv my_virtual_env_name
Activate the virtual environment, you just created. Assuming you also set WORKON_HOME=/opt/python_envs:
$ source $WORKON_HOME/my_virtual_env_name/bin/activate
Install whatever Python packages your project requires, using either of the following two methods.
Method 1 - Install using pip from command line:
$ pip install python_package_name1
$ pip install python_package_name2
Method 2 - Install using a requests.txt file:
$ echo "python_package_name1" >> requests.txt
$ echo "python_package_name2" >> requests.txt
$ pip install -r ./requests.txt
Optionally, but highly recommended, install virtualenvwrapper. It contains useful commands to make working with virtual Python environments easier:
$ pip install virtualenvwrapper
$ source /usr/local/bin/virtualenvwrapper.sh
On Windows, install virtualenvwrapper using:
$ pip install virtualenvwrapper-win
Basic usage of virtualenvwrapper
Create a new virtual environment:
$ mkvirtualenv my_virtual_env_name
List all virtual environments:
$ lsvirtualenv
Activate a virtual environment:
$ workon my_virtual_env_name
Delete a virtual environment (caution! this is irreversible!):
$ rmvirtualenv my_virtual_env_name
I hope this help!
To solve the problem do following:
First uninstall numpy
sudo pip uninstall numpy
Install numpy with --no-cache-dir option
sudo pip install --no-cache-dir numpy
And to specify any specific version e.g. 1.14.2
sudo pip install --no-cache-dir numpy==1.14.2
This command solved my problem.
pip3 install --upgrade numpy
upgrading numpy to rescue
numpy official document suggests users to do upgrade to solve this issue [1].
pip install numpy --upgrade
which version of numpy should I upgrade to
But you may upgrade to a version that is too new/old for your environment. I spent a long time trying to figure out which version of numpy is expected to be upgraded to when running into this error, and here is a list [2] of numpy versions with their corresponding C API versions, which may be useful for troubleshooting such an issue:
# 0x00000008 - 1.7.x
# 0x00000009 - 1.8.x
# 0x00000009 - 1.9.x
# 0x0000000a - 1.10.x
# 0x0000000a - 1.11.x
# 0x0000000a - 1.12.x
# 0x0000000b - 1.13.x
# 0x0000000c - 1.14.x
# 0x0000000c - 1.15.x
# 0x0000000d - 1.16.x
# 0x0000000d - 1.19.x
# 0x0000000e - 1.20.x
# 0x0000000e - 1.21.x
# 0x0000000f - 1.22.x
# 0x00000010 - 1.23.x
# 0x00000010 - 1.24.x
You can find the list here [2].
And the C API VERSION in numpy is tracked in three places according to [3]:
numpy/core/setup_common.py
numpy/core/code_generators/cversions.txt
numpy/core/include/numpy/numpyconfig.h
The error is reported by numpy's source code here [4]
references
[1] https://numpy.org/devdocs/user/troubleshooting-importerror.html#c-api-incompatibility
[2] https://github.com/numpy/numpy/blob/main/numpy/core/setup_common.py
[3] https://numpy.org/doc/stable/dev/releasing.html#check-the-c-api-version-number
[4] https://github.com/numpy/numpy/blob/bdec32181605c8179fd79624d14c1cf019de75af/numpy/core/code_generators/generate_numpy_api.py#L79
I got the same issue with quaternion module. When updating modules with conda, the numpy version is not up^dated to the last one. If forcing update with pip command pip install --upgrade numpy + install quaternion module by pip install --user numpy numpy-quaternion, the issue is fixed.
May be the issue is coming from the numpy version.
Here the execution result:
Python 2.7.14 |Anaconda custom (64-bit)| (default, Oct 15 2017, 03:34:40) [MSC v.1500 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import numpy as np
>>> print np.__version__
1.14.3
>>>
(base) C:\Users\jc>pip install --user numpy numpy-quaternion
Requirement already satisfied: numpy in d:\programdata\anaconda2\lib\site-packages (1.14.3)
Collecting numpy-quaternion
Downloading https://files.pythonhosted.org/packages/3e/73/5720d1d0a95bc2d4af2f7326280172bd255db2e8e56f6fbe81933aa00006/numpy_quaternion-2018.5.10.13.50.12-cp27-cp27m-win_amd64.whl (49kB)
100% |################################| 51kB 581kB/s
Installing collected packages: numpy-quaternion
Successfully installed numpy-quaternion-2018.5.10.13.50.12
(base) C:\Users\jc>python
Python 2.7.14 |Anaconda custom (64-bit)| (default, Oct 15 2017, 03:34:40) [MSC v.1500 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import numpy as np
>>> import quaternion
>>>
I faced the same problem due to documentation inconsistencies.
This page says the examples in the docs work best with python 3.x: https://opencv-python-tutroals.readthedocs.io/en/latest/py_tutorials/py_setup/py_intro/py_intro.html#intro , whereas this installation page has links to python 2.7, and older versions of numpy and matplotlib: https://opencv-python-tutroals.readthedocs.io/en/latest/py_tutorials/py_setup/py_setup_in_windows/py_setup_in_windows.html
My setup was as such: I already had Python 3.6 and 3.5 installed, but since OpenCv-python docs said it works best with 2.7.x, I also installed that version. After I installed numpy (in Python27 directory, without pip but with the default extractor, since pip is not part of the default python 2.7 installation like it is in 3.6), I ran in this RuntimeError: module compiled against API version a but this version of numpy is error. I tried many different versions of both numpy and opencv, but to no avail. Lastly, I simply deleted numpy from python27 (just delete the folder in site-packages as well as any other remaining numpy-named files), and installed the latest versions of numpy, matplotlib, and opencv in the Python3.6 version using pip no problem. Been running opencv ever since.
Hope this saves somebody some time.
When all else fail, check with the following script and disable unwanted python import path(s), or upgrade the package on those paths:
python ./test.py
test.py content:
import numpy as np
print(f'numpy version:{np.__version__}')
import sys
from pprint import pprint
pprint(sys.path)
import tensorflow as tf
print(f'TensorFlow version: {tf.__version__}')
For my case, it was the outdated conda version in ~/.local/lib/python3.8/site-packages that was messing things up :(
For those using anaconda Python:
conda update anaconda
You might want to check your matplotlib version.
Somehow I installed a dev version of matplotlib which caused the issue. A downgrade to stable release fixed it.
One can also can try python -v -c 'import YOUR_PACKAGE' 2>&1 | less to see where the issue occurred and if the lines above error can give you some hints.
You may also want to check your $PYTHONPATH. I had changed mine in ~/.bashrc in order to get another package to work.
To check your path:
echo $PYTHONPATH
To change your path (I use nano but you could edit another way)
nano ~/.bashrc
Look for the line with export PYTHONPATH ...
After making changes, don't forget to
source ~/.bashrc
I had the same error when trying to launch spyder. "RuntimeError: module compiled against API version 0xb but this version of numpy is 0xa".
This error appeared once I modified the numpy version of my machine by mistake (I thought I was in a venv). If your are using spyder installed with conda, my advice is to only use conda to manage package.
This works for me:
conda install anaconda
(I had conda but no anaconda on my machine)
then:
conda update numpy
The below command worked for me :
conda install -c anaconda numpy
Although this question is very old, but I do believe there are still many facing similar problem as I did. I encountered the above reported error when I used Python3 in a Raspberry Pi micro-computer, which is running on Raspberry Pi OS.
This is perhaps due to missing some libraries when installed the Numpy module. I solved this problem following the suggestion in the Numpy website.
Solutions for Numpy Module Import Error
This Numpy troubleshooting website is really informative and provides cross-platform solutions for Windows, Anaconda, Raspberry, etc. Perhaps, someone can first follow the suggestion in this Numpy official website in order to solve the error.
I had same issue when I used import pyopencl and I did not want to upgrade numpy cause tensorflow requires old version of numpy so I solved it by simply:
python -m pip uninstall pyopencl && python -m pip install pyopencl
This way pyopencl was configured with existing numpy version and error solved.
I suffered with this problem for a long time, firstly you have to upgrade numby then try this code :
import numpy as np
print np.__version__
if gives you different version from the new one , uninstall the numpy(the new version) and use this
print numpy.__path__
go to that old numpy and delete the file , then install new version again
This works for me:
My pip is not work after upgrade, so the first thing I need to do is to fix it with
sudo gedit /usr/bin/pip
Change the line
from pip import main
to
from pip._internal import main
Then,
sudo pip install -U numpy
Code:
import numpy as np
import cv
Console:
>>> runfile('/Users/isaiahnields/.spyder2/temp.py', wdir='/Users/isaiahnields/.spyder2')
RuntimeError: module compiled against API version a but this version of numpy is 9
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/Applications/Spyder-Py2.app/Contents/Resources/lib/python2.7/spyderlib/widgets/externalshell/sitecustomize.py", line 685, in runfile
execfile(filename, namespace)
File "/Applications/Spyder-Py2.app/Contents/Resources/lib/python2.7/spyderlib/widgets/externalshell/sitecustomize.py", line 78, in execfile
builtins.execfile(filename, *where)
File "/Users/isaiahnields/.spyder2/temp.py", line 9, in <module>
import cv
File "/Applications/Spyder-Py2.app/Contents/Resources/lib/python2.7/cv.py", line 1, in <module>
from cv2.cv import *
ImportError: numpy.core.multiarray failed to import
>>>
System Info: OS X El Capitan, Macbook Air, 1.3 GHz Intel Core i5, 8 GB 1600 HMz DDR3
I have already attempted updating numpy. I had to add cv.py to the python2.7 folder in Spyder-Py2 is there something else I need to add?
Upgrade numpy to the latest version
pip install numpy --upgrade
Check the path
import numpy
print numpy.__path__
For me this was /System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/numpy So I moved it to a temporary place
sudo mv /System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/numpy \
/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/numpy_old
and then the next time I imported numpy the path was /Library/Python/2.7/site-packages/numpy/init.pyc and all was well.
This worked for me:
sudo pip install numpy --upgrade --ignore-installed
You are likely running the Mac default (/usr/bin/python) which has an older version of numpy installed in the system folders. The easiest way to get python working with opencv is to use brew to install both python and opencv into /usr/local and run the /usr/local/bin/python.
brew install python
brew tap homebrew/science
brew install opencv
I ran into the same issue tonight. It turned out to be a problem where I had multiple numpy packages installed. An older version was installed in /usr/lib/python2.7 and the correct version was installed in /usr/local/lib/python2.7.
Additionally, I had PYTHONPATH=/usr/lib/python2.7/dist-packages:/usr/local/lib/python2.7/dist-packages. PYTHONPATH was finding the older version of numpy before the correct version, so when inside the Python interpreter, it would import the older version of numpy.
One thing which helped was opening a python session an executing the following code:
import numpy as np
print np.__version__
print np.__path__
That should tell you exactly which version Python is using, and where it's installed.
To fix the issue, I changed PYTHONPATH=/usr/local/lib/python2.7/dist-packages:/usr/lib/python2.7/dist-packages. And I also setup a virtual Python environment using the Hitchiker's Guide to Python, specifically the section titled "Lower level: virtualenv" . I know I should have setup a virtual environment in the first place, but I was tired and being lazy. Oh well, lesson learned!
(Update)
Just in case the docs are moved again, here are the relevant bits on...
Creating a Python Virtual Environment
Install virtualenv via pip:
$ install virtualenv
Test the installation:
$ virtualenv --version
Optionally, et the environment variable VIRTUALENVWRAPPER_PYTHON to change the default version of python used by virtual environments, for example to use Python 3:
$ export VIRTUALENVWRAPPER_PYTHON=$(which python3)
Optionally, set the environment variable WORKON_HOME to change the default directory your Python virtual environments are created in, for example to use /opt/python_envs:
$ export WORKON_HOME=/opt/python_envs
Create a virtual environment for a project:
$ cd my_project_folder
$ virtualenv my_virtual_env_name
Activate the virtual environment, you just created. Assuming you also set WORKON_HOME=/opt/python_envs:
$ source $WORKON_HOME/my_virtual_env_name/bin/activate
Install whatever Python packages your project requires, using either of the following two methods.
Method 1 - Install using pip from command line:
$ pip install python_package_name1
$ pip install python_package_name2
Method 2 - Install using a requests.txt file:
$ echo "python_package_name1" >> requests.txt
$ echo "python_package_name2" >> requests.txt
$ pip install -r ./requests.txt
Optionally, but highly recommended, install virtualenvwrapper. It contains useful commands to make working with virtual Python environments easier:
$ pip install virtualenvwrapper
$ source /usr/local/bin/virtualenvwrapper.sh
On Windows, install virtualenvwrapper using:
$ pip install virtualenvwrapper-win
Basic usage of virtualenvwrapper
Create a new virtual environment:
$ mkvirtualenv my_virtual_env_name
List all virtual environments:
$ lsvirtualenv
Activate a virtual environment:
$ workon my_virtual_env_name
Delete a virtual environment (caution! this is irreversible!):
$ rmvirtualenv my_virtual_env_name
I hope this help!
To solve the problem do following:
First uninstall numpy
sudo pip uninstall numpy
Install numpy with --no-cache-dir option
sudo pip install --no-cache-dir numpy
And to specify any specific version e.g. 1.14.2
sudo pip install --no-cache-dir numpy==1.14.2
This command solved my problem.
pip3 install --upgrade numpy
upgrading numpy to rescue
numpy official document suggests users to do upgrade to solve this issue [1].
pip install numpy --upgrade
which version of numpy should I upgrade to
But you may upgrade to a version that is too new/old for your environment. I spent a long time trying to figure out which version of numpy is expected to be upgraded to when running into this error, and here is a list [2] of numpy versions with their corresponding C API versions, which may be useful for troubleshooting such an issue:
# 0x00000008 - 1.7.x
# 0x00000009 - 1.8.x
# 0x00000009 - 1.9.x
# 0x0000000a - 1.10.x
# 0x0000000a - 1.11.x
# 0x0000000a - 1.12.x
# 0x0000000b - 1.13.x
# 0x0000000c - 1.14.x
# 0x0000000c - 1.15.x
# 0x0000000d - 1.16.x
# 0x0000000d - 1.19.x
# 0x0000000e - 1.20.x
# 0x0000000e - 1.21.x
# 0x0000000f - 1.22.x
# 0x00000010 - 1.23.x
# 0x00000010 - 1.24.x
You can find the list here [2].
And the C API VERSION in numpy is tracked in three places according to [3]:
numpy/core/setup_common.py
numpy/core/code_generators/cversions.txt
numpy/core/include/numpy/numpyconfig.h
The error is reported by numpy's source code here [4]
references
[1] https://numpy.org/devdocs/user/troubleshooting-importerror.html#c-api-incompatibility
[2] https://github.com/numpy/numpy/blob/main/numpy/core/setup_common.py
[3] https://numpy.org/doc/stable/dev/releasing.html#check-the-c-api-version-number
[4] https://github.com/numpy/numpy/blob/bdec32181605c8179fd79624d14c1cf019de75af/numpy/core/code_generators/generate_numpy_api.py#L79
I got the same issue with quaternion module. When updating modules with conda, the numpy version is not up^dated to the last one. If forcing update with pip command pip install --upgrade numpy + install quaternion module by pip install --user numpy numpy-quaternion, the issue is fixed.
May be the issue is coming from the numpy version.
Here the execution result:
Python 2.7.14 |Anaconda custom (64-bit)| (default, Oct 15 2017, 03:34:40) [MSC v.1500 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import numpy as np
>>> print np.__version__
1.14.3
>>>
(base) C:\Users\jc>pip install --user numpy numpy-quaternion
Requirement already satisfied: numpy in d:\programdata\anaconda2\lib\site-packages (1.14.3)
Collecting numpy-quaternion
Downloading https://files.pythonhosted.org/packages/3e/73/5720d1d0a95bc2d4af2f7326280172bd255db2e8e56f6fbe81933aa00006/numpy_quaternion-2018.5.10.13.50.12-cp27-cp27m-win_amd64.whl (49kB)
100% |################################| 51kB 581kB/s
Installing collected packages: numpy-quaternion
Successfully installed numpy-quaternion-2018.5.10.13.50.12
(base) C:\Users\jc>python
Python 2.7.14 |Anaconda custom (64-bit)| (default, Oct 15 2017, 03:34:40) [MSC v.1500 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import numpy as np
>>> import quaternion
>>>
I faced the same problem due to documentation inconsistencies.
This page says the examples in the docs work best with python 3.x: https://opencv-python-tutroals.readthedocs.io/en/latest/py_tutorials/py_setup/py_intro/py_intro.html#intro , whereas this installation page has links to python 2.7, and older versions of numpy and matplotlib: https://opencv-python-tutroals.readthedocs.io/en/latest/py_tutorials/py_setup/py_setup_in_windows/py_setup_in_windows.html
My setup was as such: I already had Python 3.6 and 3.5 installed, but since OpenCv-python docs said it works best with 2.7.x, I also installed that version. After I installed numpy (in Python27 directory, without pip but with the default extractor, since pip is not part of the default python 2.7 installation like it is in 3.6), I ran in this RuntimeError: module compiled against API version a but this version of numpy is error. I tried many different versions of both numpy and opencv, but to no avail. Lastly, I simply deleted numpy from python27 (just delete the folder in site-packages as well as any other remaining numpy-named files), and installed the latest versions of numpy, matplotlib, and opencv in the Python3.6 version using pip no problem. Been running opencv ever since.
Hope this saves somebody some time.
When all else fail, check with the following script and disable unwanted python import path(s), or upgrade the package on those paths:
python ./test.py
test.py content:
import numpy as np
print(f'numpy version:{np.__version__}')
import sys
from pprint import pprint
pprint(sys.path)
import tensorflow as tf
print(f'TensorFlow version: {tf.__version__}')
For my case, it was the outdated conda version in ~/.local/lib/python3.8/site-packages that was messing things up :(
For those using anaconda Python:
conda update anaconda
You might want to check your matplotlib version.
Somehow I installed a dev version of matplotlib which caused the issue. A downgrade to stable release fixed it.
One can also can try python -v -c 'import YOUR_PACKAGE' 2>&1 | less to see where the issue occurred and if the lines above error can give you some hints.
You may also want to check your $PYTHONPATH. I had changed mine in ~/.bashrc in order to get another package to work.
To check your path:
echo $PYTHONPATH
To change your path (I use nano but you could edit another way)
nano ~/.bashrc
Look for the line with export PYTHONPATH ...
After making changes, don't forget to
source ~/.bashrc
I had the same error when trying to launch spyder. "RuntimeError: module compiled against API version 0xb but this version of numpy is 0xa".
This error appeared once I modified the numpy version of my machine by mistake (I thought I was in a venv). If your are using spyder installed with conda, my advice is to only use conda to manage package.
This works for me:
conda install anaconda
(I had conda but no anaconda on my machine)
then:
conda update numpy
The below command worked for me :
conda install -c anaconda numpy
Although this question is very old, but I do believe there are still many facing similar problem as I did. I encountered the above reported error when I used Python3 in a Raspberry Pi micro-computer, which is running on Raspberry Pi OS.
This is perhaps due to missing some libraries when installed the Numpy module. I solved this problem following the suggestion in the Numpy website.
Solutions for Numpy Module Import Error
This Numpy troubleshooting website is really informative and provides cross-platform solutions for Windows, Anaconda, Raspberry, etc. Perhaps, someone can first follow the suggestion in this Numpy official website in order to solve the error.
I had same issue when I used import pyopencl and I did not want to upgrade numpy cause tensorflow requires old version of numpy so I solved it by simply:
python -m pip uninstall pyopencl && python -m pip install pyopencl
This way pyopencl was configured with existing numpy version and error solved.
I suffered with this problem for a long time, firstly you have to upgrade numby then try this code :
import numpy as np
print np.__version__
if gives you different version from the new one , uninstall the numpy(the new version) and use this
print numpy.__path__
go to that old numpy and delete the file , then install new version again
This works for me:
My pip is not work after upgrade, so the first thing I need to do is to fix it with
sudo gedit /usr/bin/pip
Change the line
from pip import main
to
from pip._internal import main
Then,
sudo pip install -U numpy
Trying to install OpenCV and running into an issue where attempting to import cv2 results in this output -
RuntimeError: module compiled against API version 9 but this version of numpy is 7
Traceback (most recent call last):
File "<pyshell#4>", line 1, in <module>
import cv2
ImportError: numpy.core.multiarray failed to import
I'm running on Windows 7 x64, Python v 2.7.9
Thanks!
The error is telling you that you have an out of date version of numpy. If you used pip to install things you can simply run pip install numpy -U, or download the appropriate version from their website.
In case
pip install -U numpy
doesn't work (even with sudo), you may want to make sure you're using the right version of numpy. I had the same "numpy.core.multiarray failed to import" issue, but it was because I had 1.6 installed for the version of Python I was using, even though I kept installing 1.8 and assumed it was installing in the right directory.
I found the bad numpy version by using the following command in my Mac terminal:
python -c "import numpy;print numpy.version;print numpy.file";
This command gave me the version and location of numpy that I was using (turned out it was 1.6.2). I went to this location and manually replaced it with the numpy folder for 1.8, which resolved my "numpy.core.multiarray failed to import" issue. Hopefully someone finds this useful!
I had a similar problem and I solved it by downgrading my numpy version.
What I did was:
pip install opencv-python
pip uninstall numpy
pip install numpy=1.18
This has worked for me using
Python 3.7
opencv-python 4.4.0.46
numpy 1.18.0
linux: sudo apt-get install python-numpy
if you are using ubuntu bionic beaver then try running: sudo apt-get install python-numpy
had the same issue, resolve by running the above command.
Hope it helps
In your environment you can try this command:
conda uninstall numpy
conda install -c conda-forge numpy
I use Python 3.7 # RPI 4.
For opencv to install properly I had to install the listed libraries below.
(Not every package was actually installed, after request)
Regarding Numpy, I think one should stick to the latest version.
For me what worked is to uninstall the existing version 1.16.2 and stick with the current stable 1.21.2.
Stackoverflow topic at missing libraries here: ImportError: libcblas.so.3: cannot open shared object file: No such file or directory.
I installed a new module and it appears as if one of its dependencies was not already installed. The module is called Xlib.display.
Here is the error message I received:
from Xlib.display import Display
ImportError: No module named Xlib.display
Where can I find this module that I am apparently lacking? Google yielded no leads.
"Edit: I already have that sourceforge module downloaded but I still get the same results.
Please try.
This shall install Xlib
sudo apt-get install python-xlib
Then you can check
>>from Xlib.display import Display
To install PyMouse if you want to control and capture mouse events please use:
sudo easy_install https://github.com/pepijndevos/PyMouse/zipball/master
Below worked for me!
pip install python3_xlib
I have also used pyuserinput for automation which requires this.
I was having the same problem, but the solutions above didn't work for me. Since I had installed python through the anaconda package, when I used:
sudo apt-get install python-xlib
Xlib was still undetectable by python2. The solution in my case was to use:
anaconda search -t conda python-xlib
Then find the package from the anaconda api, mine was erik/python-xlib. Install it using:
conda install --channel https://conda.anaconda.org/erik python-xlib
Then it worked.
On Debian systems install python-xlib.
On other systems there's a high probability that the package carries the same name.
I don't think the Xlib library works in Python 3.
Source:
Requirements
The Python X Library requires Python 1.5.2 or newer. It has been tested to various extents with Python 1.5.2 and 2.0 through 2.6.
I honestly cant explain why this works... but here is the command that got it working for me.
sudo apt-get install python3-xlib
Should not work because xlib apparently does not work with python 3.x, but everything installed alright, so I'm not complaining!
I was looking for the same answer, however after some more digging it seems that XCB (X protocol C-language Binding) will obsolete Xlib in general. From the XCB website:
The X protocol C-language Binding (XCB) is a replacement for Xlib featuring a small footprint, latency hiding, direct access to the protocol, improved threading support, and extensibility.
Fortunately there are python bindings available as python-xpyb in apt or xpyb on PyPi. I've not gotten that far in my project so I haven't tested if this works with Python3, but this is probably the way to go and the proper place to file any Python3 support bugs if necessary.
Scenario:
I was trying to use screenshot functionalities of pyautogui package. I was getting this error:
Traceback (most recent call last):
File "test_screenshot.py", line 1, in <module>
import pyautogui
File ".../miniconda3/envs/myenv/lib/python3.7/site-packages/pyautogui/__init__.py", line 152, in <module>
from . import _pyautogui_x11 as platformModule
File ".../miniconda3/envs/myenv/lib/python3.7/site-packages/pyautogui/_pyautogui_x11.py", line 7, in <module>
from Xlib.display import Display
ModuleNotFoundError: No module named 'Xlib'
Python code (test_screenshot.py):
import pyautogui
img = pyautogui.screenshot('test.png')
Environment:
Ubuntu 16.04 (LTS)
conda 4.5.11
Python 3.7 (Miniconda)
requirements.txt:
certifi==2019.3.9
Pillow==5.4.1
PyAutoGUI==0.9.42
PyGetWindow==0.0.4
PyMsgBox==1.0.6
PyRect==0.1.4
PyScreeze==0.1.20
PyTweening==1.0.3
Solution:
I installed python-xlib package in the conda environment using:
pip install python-xlib
Now test_screenshot.py is running without any error.
Updated requirements.txt:
certifi==2019.3.9
Pillow==5.4.1
PyAutoGUI==0.9.42
PyGetWindow==0.0.4
PyMsgBox==1.0.6
PyRect==0.1.4
PyScreeze==0.1.20
python-xlib==0.25
PyTweening==1.0.3
six==1.12.0