Импортировать PySpin в Conda: не удается найти mkl_intel_thread.dll - PullRequest
4 голосов
/ 22 апреля 2019

Я использую API PySpin для камеры Point Grey в Anaconda / Python 3.6 (код API работает только с Python 3.6). API - это оболочка Python для библиотеки C ++, которая называется Spinnaker (https://www.ptgrey.com/spinnaker-sdk).

Когда я импортирую в Spyder (import PySpin), все работает нормально (обратите внимание, я запускаю Spyder из командной строки Conda в среде, где все установлено). К сожалению, запуск импорта из приглашения conda вместо Spyder (python foo.py, где foo.py содержит import PySpin) приводит к:

Intel MKL FATAL ERROR: не удается загрузить mkl_intel_thread.dll.

Порядковый номер 242 не может быть расположен в библиотеке динамических ссылок C: \ Anaconda3 \ Library \ Bin \ mkl_intel_thread.dll

Обратите внимание, что я установил Spinnaker (PySpin) с колеса в командной строке anaconda:

pip install spinnaker_python-1.20.0.15-cp36-cp36m-win_amd64.whl

Куча мест в Интернете, где говорится, чтобы найти следующие файлы в C: \ Windows \ System32 и переименовать или удалить их:

mkl_core.dll
mkl_def.dll
mkl_intel_thread.dll

Эти файлы отсутствуют на моем компьютере, поэтому в моем случае это не проблема.

Например, здесь упоминается это решение:
Не удалось найти порядковый номер 242 в библиотеке динамических ссылок Anaconda3 \ Library \ bin \ mkl_intel_thread.dll

Ответы [ 3 ]

3 голосов
/ 23 апреля 2019

Когда я впервые импортирую numpy и PySpin, он работает для меня.

import numpy as np # must be imported first
import PySpin

system = PySpin.System.GetInstance()
version = system.GetLibraryVersion()
print('Library version: %d.%d.%d.%d' % (version.major, version.minor, version.type, version.build))
# Library version: 1.20.0.15

Я использую Python 3.5 под Windows 10 с Miniconda.

1 голос
/ 06 мая 2019

Проблема вызвана тем, что файл libiomp5md.dll, включенный в колесо spinnaker_python, несовместим с дистрибутивом Anaconda. Простое удаление или переименование этого файла приведет к загрузке по умолчанию версии Anaconda для загрузки файла.

Выполните следующую команду из приглашения Anaconda, чтобы устранить проблему. Если Anaconda установлена ​​для всех пользователей, вам нужна версия Anaconda для администратора.

move %CONDA_PREFIX%\Lib\site-packages\PySpin\libiomp5md.dll %CONDA_PREFIX%\Lib\site-packages\PySpin\libiomp5md.bak
1 голос
/ 22 апреля 2019

Решение, рекомендованное Point Grey

От разработчиков из Point Grey, которым я написал по электронной почте об этой проблеме, и они знали об этом.Они предложили удалить numpy, установленный с conda, и переустановить его с помощью pip.То есть:

conda uninstall numpy
pip install numpy

Обратите внимание, что хотя это сработало, я не могу гарантировать, что оно будет хорошо масштабироваться в сложных проектах, включающих другие зависимости.

Обновление: это сработалов течение дня или около того, но в моих руках это перестало работать, когда я добавил другие зависимости / обновления (в частности OpenCV).Однако, возможно, другим людям повезет больше с этим решением, поэтому я оставлю его здесь.


Второе решение

Если у вас возникли проблемы с другими решениями, возможно, дайте этоу меня это получилось: запустите код из ipython, запущенного из приглашения conda, а затем снова запустите из conda:

ipythyon
%run foo.py  #script containing import PySpin
exit()

Это сработало, что неудивительно (это в основном то, что делает Spyder),Как ни странно, еще раз в приглашении conda я попытался снова запустить программу:

python foo.py

И на этот раз это сработало.Таким образом, он не работал до того, как я сделал это в ipython, и теперь он работает .

Честно говоря, я понятия не имею, почему это решило проблему, но это произошло.\ _ (ツ) _ /

Я оставляю эти решения здесь, но, честно говоря, я попытался бы импортировать numpy перед PySpin, как в принятом ответе.Это просто проще и менее разрушительно.

...