Вам просто нужно запустить query
db.test.find(
{"shapes.color": "red"},
{shapes: {$elemMatch: {color: "red"}}});
вывод этого запроса:
{
"_id" : ObjectId("562e7c594c12942f08fe4192"),
"shapes" : [
{"shape" : "circle", "color" : "red"}
]
}
, как вы ожидали, это даст точное поле из массива, которое соответствует цвету: 'красный'.
Это сработало для меня:
sudo pip install numpy --upgrade --ignore-installed
Я столкнулся с той же проблемой из-за несоответствий документации. Эта страница говорит, что примеры в документации лучше всего работают с python 3.x: https://opencv-python-tutroals.readthedocs.io/en/latest/py_tutorials/py_setup/py_intro/py_intro.html#intro , тогда как на этой странице установки есть ссылки на python 2.7 и более старые версии numpy и matplotlib: https://opencv-python-tutroals.readthedocs.io/en/latest/py_tutorials/py_setup/py_setup_in_windows/py_setup_in_windows. html
Моя настройка была такой: у меня уже установлены Python 3.6 и 3.5, но поскольку документы OpenCv-python говорят, что лучше всего работают с 2.7.x, я также установил эту версию. После того, как я установил numpy (в директории Python27, без pip, но с экстрактором по умолчанию, поскольку pip не является частью установки python 2.7 по умолчанию, как в 3.6), я столкнулся с этой ошибкой RuntimeError: module compiled against API version a but this version of numpy is
. Я пробовал много разных версий как numpy, так и opencv, но безрезультатно. Наконец, я просто удалил numpy из python27 (просто удалил папку в пакетах сайта, а также любые другие оставшиеся имена с нумерованными именами) и установил последние версии numpy, matplotlib и opencv в версии Python3.6, используя pip no проблема. С тех пор работает opencv.
Надеюсь, это немного сэкономит время.
Чтобы решить проблему, выполните следующие действия:
Сначала удалите numpy
sudo pip unintsall numpy
Установите numpy с параметром - no-cache-dir
sudo pip install --no-cache-dir numpy
И указать какую-либо конкретную версию, например 1.14.2
sudo pip install --no-cache-dir numpy==1.14.2
Вы также можете проверить свой $PYTHONPATH
.
Чтобы проверить ваш путь:
echo $PYTHONPATH
Чтобы изменить ваш путь (я использую nano, но вы могли бы отредактируйте другой способ)
nano ~/.bashrc
Ищите строку с export PYTHONPATH
...
После внесения изменений не забудьте
source ~/.bashrc
Возможно, вы захотите проверить версию matplotlib.
Как-то я установил dev-версию matplotlib, которая вызвала проблему. Исправлено его понижение до стабильного выпуска.
Можно также попробовать python -v -c 'import YOUR_PACKAGE' 2>&1 | less
, чтобы увидеть, где произошла ошибка, и если строки выше ошибки могут дать вам некоторые подсказки.
Проверьте путь
import numpy
print numpy.__path__
Для меня это было /System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/numpy. Поэтому я переместил его во временное место
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
, а затем в следующий раз, когда я импортировал numpy, путь был /Library/Python/2.7/site-packages/numpy/init.pyc, и все было хорошо.
pip install numpy -I
(аргумент capital i указывает на установку при игнорировании текущей установки, которая была перенесена).
– Guillaume Chevalier
8 August 2017 в 23:20
обновление numpy до последней версии
pip install numpy --upgrade
Requirement already up-to-date: numpy in /home/ubuntu/miniconda/lib/python3.6/site-packages
– Guillaume Chevalier
8 August 2017 в 23:14
import torch
– dinosaur
27 November 2017 в 20:46
У меня была такая же ошибка при попытке запустить spyder. «RuntimeError: модуль скомпилирован против версии API 0xb, но эта версия numpy равна 0xa». Эта ошибка появилась после того, как я по ошибке изменил версию своего компьютера с помощью numpy (я думал, что я был в Вене).
Это работает для меня:
conda install anaconda
(у меня была конда, но нет anaconda on моя машина), то:
conda update numpy
Сегодня я столкнулся с тем же вопросом. Это оказалось проблемой, когда у меня было установлено несколько пакетов numpy. Более старая версия была установлена в /usr/lib/python2.7
, и правильная версия была установлена в /usr/local/lib/python2.7
.
Кроме того, у меня был PYTHONPATH=/usr/lib/python2.7/dist-packages:/usr/local/lib/python2.7/dist-packages
. PYTHONPATH находил более старую версию numpy до правильной версии, поэтому, когда внутри интерпретатора Python, она импортировала бы более старую версию numpy.
Одна вещь, которая помогла открыть сеанс python, выполнить следующий код :
import numpy as np
print np.__version__
print np.__path__
Это должно сказать вам, какую версию Python использует, и где она установлена.
Чтобы исправить проблему, я изменил PYTHONPATH=/usr/local/lib/python2.7/dist-packages:/usr/lib/python2.7/dist-packages
. И я также настраиваю виртуальную среду Python с помощью руководства Hitchiker для Python , в частности раздела под названием «Нижний уровень: virtualenv». Я знаю, что мне нужно было настроить виртуальную среду, но я устал и ленился.
(Обновление)
На всякий случай, когда документы будут перемещены снова, вот соответствующие бит на ...
Создание Виртуальная среда Python
Установите virtualenv через pip:
$ install virtualenv
Проверьте установку:
$ virtualenv --version
Опционально, переменная среды VIRTUALENVWRAPPER_PYTHON
изменится версия python по умолчанию, используемая виртуальными средами, например, для использования Python 3:
$ export VIRTUALENVWRAPPER_PYTHON=$(which python3)
. При необходимости установите переменную среды WORKON_HOME
, чтобы изменить каталог по умолчанию, в котором созданы виртуальные среды Python, для Пример использования /opt/python_envs
:
$ export WORKON_HOME=/opt/python_envs
Создание виртуальной среды для проекта:
$ cd my_project_folder
$ virtualenv my_virtual_env_name
Активировать созданную виртуальную среду. Предположим, вы также установили WORKON_HOME=/opt/python_envs
:
$ source $WORKON_HOME/my_virtual_env_name/bin/activate
Установите все пакеты Python, которые требуется вашему проекту, используя один из двух следующих методов.
Способ 1 - Установить с помощью pip
из командной строки:
$ pip install python_package_name1
$ pip install python_package_name2
Способ 2 - Установить с помощью файла requests.txt
:
$ echo "python_package_name1" >> requests.txt
$ echo "python_package_name2" >> requests.txt
$ pip install -r ./requests.txt
Необязательно, но настоятельно рекомендуется установить virtualenvwrapper
. Он содержит полезные команды, облегчающие работу с виртуальными средами Python:
$ pip install virtualenvwrapper
$ source /usr/local/bin/virtualenvwrapper.sh
В Windows установите virtualenvwrapper
, используя:
$ pip install virtualenvwrapper-win
Базовое использование virtualenvwrapper Создайте новый виртуальный среда:
$ mkvirtualenv my_virtual_env_name
Список всех виртуальных сред:
$ lsvirtualenv
Активировать виртуальную среду:
$ workon my_virtual_env_name
Удалить виртуальную среду (предостережение! необратимо!):
$ rmvirtualenv my_virtual_env_name
Надеюсь, эта помощь!
Вероятно, вы используете Mac по умолчанию (/ usr / bin / python), у которого установлена старая версия numpy, установленная в системных папках. Самый простой способ заставить python работать с opencv - использовать пиво для установки как python, так и opencv в / usr / local и запустить /usr/local/bin/python.
brew install python
brew tap homebrew/science
brew install opencv
Это работает для меня:
Мой pip
не работает после обновления, поэтому первое, что мне нужно сделать, это исправить его с помощью
sudo gedit /usr/bin/pip
Измените line
from pip import main
-
from pip._internal import main
Затем
sudo pip install -U numpy
У меня такая же проблема с модулем кватерниона. При обновлении модулей с conda версия numpy не добавляется к последней. Если принудительное обновление с помощью команды pip pip install --upgrade numpy + install quaternion module by pip install --user numpy numpy-quaternion, проблема исправлена. Возможно, проблема связана с версией numpy. Здесь результат выполнения:
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
>>>
Для тех, кто использует anaconda Python:
conda update anaconda