Конда не может найти установленный модуль - PullRequest
0 голосов
/ 14 декабря 2018

Я пытался установить "mkldnn" с помощью conda, но столкнулся с этой старой проблемой: "установленный conda, но python не может найти установленный модуль".Странная вещь после того, как я добавил путь к импорту python, он все еще не может найти его.

У вас случайно есть идея, почему?Вот методы, которые я пробовал, и результаты.

Шаг 1: Я попытался создать новую среду conda с Python3.6 и переустановить mkldnn с conda.Все еще не могу найти.

[yl5090@log-0 ~]$ module purge
[yl5090@log-0 ~]$ module load anaconda3/5.3.0
[yl5090@log-0 ~]$ conda create --name pytorch-mpi python=3.6
Solving environment: done

## Package Plan ##

  environment location: /home/yl5090/.conda/envs/pytorch-mpi

  added / updated specs:
    - python=3.6


The following NEW packages will be INSTALLED:

    ca-certificates: 2018.03.07-0
    certifi:         2018.11.29-py36_0
    libedit:         3.1.20170329-h6b74fdf_2
    libffi:          3.2.1-hd88cf55_4
    libgcc-ng:       8.2.0-hdf63c60_1
    libstdcxx-ng:    8.2.0-hdf63c60_1
    ncurses:         6.1-he6710b0_1
    openssl:         1.1.1a-h7b6447c_0
    pip:             18.1-py36_0
    python:          3.6.7-h0371630_0
    readline:        7.0-h7b6447c_5
    setuptools:      40.6.2-py36_0
    sqlite:          3.25.3-h7b6447c_0
    tk:              8.6.8-hbc83047_0
    wheel:           0.32.3-py36_0
    xz:              5.2.4-h14c3975_4
    zlib:            1.2.11-h7b6447c_3

Proceed ([y]/n)? y

Preparing transaction: done
Verifying transaction: done
Executing transaction: done
#
# To activate this environment, use:
# > source activate pytorch-mpi
#
# To deactivate an active environment, use:
# > source deactivate
#

[yl5090@log-0 ~]$ source activate pytorch-mpi
(pytorch-mpi) [yl5090@log-0 ~]$ conda install -c mingfeima mkldnn
Solving environment: done

## Package Plan ##

  environment location: /home/yl5090/.conda/envs/pytorch-mpi

  added / updated specs:
    - mkldnn


The following NEW packages will be INSTALLED:

    intel-openmp: 2019.1-144
    mkl:          2019.1-144
    mkldnn:       0.16.1-0   mingfeima

Proceed ([y]/n)? y

Preparing transaction: done
Verifying transaction: done
Executing transaction: done
(pytorch-mpi) [yl5090@log-0 ~]$ python
Python 3.6.7 |Anaconda, Inc.| (default, Oct 23 2018, 19:16:44)
[GCC 7.3.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import mkldnn
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ModuleNotFoundError: No module named 'mkldnn'
>>>

Шаг 2: Я проверил, нет ли пакета mkldnn в sys.path этого Python.

>>> import sys
>>> sys.path
['', '/home/yl5090/.conda/envs/pytorch-mpi/lib/python36.zip', '/home/yl5090/.conda/envs/pytorch-mpi/lib/python3.6', '/home/yl5090/.conda/envs/pytorch-mpi/lib/python3.6/lib-dynload', '/home/yl5090/.conda/envs/pytorch-mpi/lib/python3.6/site-packages']


[yl5090@log-1 lab4]$ cd /home/yl5090/.conda/envs/pytorch-mpi/lib
[yl5090@log-1 lib]$ pwd
/home/yl5090/.conda/envs/pytorch-mpi/lib
[yl5090@log-1 lib]$ find . -type d -name "*mkldnn*" -print
[yl5090@log-1 lib]$

Шаг 3: Я проверил путь импорта установленной conda numpy и не могу найти mkldnn по этому пути.

>>> import numpy
>>> import inspect
>>> inspect.getfile(numpy)
'/home/yl5090/.conda/envs/pytorch-mpi/lib/python3.6/site-packages/numpy/__init__.py'

[yl5090@log-1 lib]$ cd /home/yl5090/.conda/envs/pytorch-mpi/lib/python3.6/site-packages/
[yl5090@log-1 site-packages]$ ls
certifi                            pip
certifi-2018.11.29-py3.6.egg-info  pip-18.1-py3.6.egg-info
easy_install.py                    pkg_resources
mkl_fft                            __pycache__
mkl_fft-1.0.6-py3.6.egg-info       README.txt
mkl_random                         setuptools
mkl_random-1.0.2-py3.6.egg-info    setuptools-40.6.2-py3.6.egg-info
numpy                              wheel
numpy-1.15.4-py3.6.egg-info        wheel-0.32.3-py3.6.egg-info

Шаг 4: Я нашелустановил mkldnn в каталог /.conda/pkgs и добавил его в путь импорта python.Но все еще не могу импортировать его из python.

[yl5090@log-1 pkgs]$ ls /home/yl5090/.conda/pkgs | grep mkldnn
mkldnn-0.16.1-0
[yl5090@log-1 pkgs]$ cd mkldnn*
[yl5090@log-1 mkldnn-0.16.1-0]$ ls
include  info  lib  share

(load in python...)
>>> path = "/home/yl5090/.conda/pkgs"
>>> import sys
>>> sys.path.insert(0, path)
>>> sys.path
['/home/yl5090/.conda/pkgs', '', '/home/yl5090/.conda/envs/pytorch-mpi/lib/python36.zip', '/home/yl5090/.conda/envs/pytorch-mpi/lib/python3.6', '/home/yl5090/.conda/envs/pytorch-mpi/lib/python3.6/lib-dynload', '/home/yl5090/.conda/envs/pytorch-mpi/lib/python3.6/site-packages']
>>> import mkldnn
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ModuleNotFoundError: No module named 'mkldnn'

Остается только одна причина, по которой я могу подумать: Python не может импортировать файлы .so без файла __init__.py, но я не уверен, правильно ли этонаправление идти по этому вопросу.

Наконец, вот что находится в каталоге mkldnn, который я нашел, не уверен, что это именно то, что установил conda.

[yl5090@log-1 mkldnn-0.16.1-0]$ ls
include  info  lib  share

Спасибо !!!

1 Ответ

0 голосов
/ 14 декабря 2018

Я разобрался.Это не пакет Python: https://github.com/intel/mkl-dnn Это модуль C / C ++ ... Спасибо!

...