pyenv + conda не устанавливает пакеты - PullRequest
0 голосов
/ 16 февраля 2019

Я пытаюсь установить пакеты, используя conda, но ничего не происходит.conda не находит numpy:

$ python -c "import numpy"
Traceback (most recent call last):
  File "<string>", line 1, in <module>
    import numpy
ModuleNotFoundError: No module named 'numpy'

Но когда я пытаюсь установить numpy, используя conda, я просто получаю:

$ conda install numpy
Collecting package metadata: done
Solving environment: done

# All requested packages already installed.

И нет никакого способапринудительно conda установить его в любом случае:

$ conda install --force-reinstall numpy
Collecting package metadata: done
Solving environment: done

## Package Plan ##

  environment location: {HOME}/.pyenv/versions/miniconda3-latest

  added / updated specs:
    - numpy



Proceed ([y]/n)? y

Preparing transaction: done
Verifying transaction: done
Executing transaction: done

Есть ли решение для conda действительно установки пакетов?Или мне действительно нужно все удалить и установить заново?Или даже есть решение для установки python (с использованием mkl), которое менее ужасно, чем conda?


Моя среда настроена (с использованием pyenv), чтобы использовать conda установка:

$ which python
{HOME}/.pyenv/shims/python

и, например,

$ python -c "import tqdm; print(tqdm.__file__)"
{HOME}/.pyenv/versions/miniconda3-latest/lib/python3.6/site-packages/tqdm/__init__.py

Ответы [ 2 ]

0 голосов
/ 16 февраля 2019

tl; dr

conda install -f, conda install --force-reinstall ничего не делать, вручную удалить кеш, например rm -rf {CONDA_LOCATION}/pkgs/{PACKAGE_NAME}*, затем conda install {PACKAGE_NAME}.


Я наконецнашел разумный взлом, чтобы заставить conda установить пакеты.conda хранит кеш, который можно найти с помощью conda info

$ conda info
...
package cache : {HOME}/.pyenv/versions/miniconda3-latest/pkgs
                {HOME}/.conda/pkgs

Просто удалите из кеша все, что связано с пакетами, которые вы хотите установить:

rm -rf {HOME}/.pyenv/versions/miniconda3-latest/pkgs/numpy*

(рассмотрите возможность созданиярезервное копирование перед выполнением таких радикальных шагов).После этого conda может установить пакеты как обычно:

$ conda install numpy
Collecting package metadata: done
Solving environment: done

## Package Plan ##

  environment location: {HOME}.pyenv/versions/miniconda3-latest

  added / updated specs:
    - numpy


The following packages will be downloaded:

    package                    |            build
    ---------------------------|-----------------
    numpy-base-1.15.4          |           py36_2         6.1 MB  intel
    ------------------------------------------------------------
                                           Total:         6.1 MB

The following NEW packages will be INSTALLED:

  numpy-base         intel/linux-64::numpy-base-1.15.4-py36_2


Proceed ([y]/n)? y


Downloading and Extracting Packages
numpy-base-1.15.4    | 6.1 MB    | ################################################################################################################################################################### | 100% 
Preparing transaction: done
Verifying transaction: done
Executing transaction: done
0 голосов
/ 16 февраля 2019

Обновленный ответ:

Вторая попытка ответить на ваш вопрос (я новичок в использовании pyenv, но надеюсь, что это поможет):

При использовании pyenv и miniconda я бы активировал вашу среду (miniconda3-последним из вашего поста), тогда для установки ваших пакетов нужно использовать правильную conda:

# Activate your environment
pyenv activate miniconda3-latest

# Install numpy, etc.
conda install numpy

# This then works without errors for me:
python -c "import numpy"

# Deactivate your environment when finish if you want
pyenv deactivate

Как общее замечание, кажется, что pyenv и conda делают схожие вещи (см. https://bastibe.de/2017-11-20-pyenv.html).Я еще не исследовал большую часть pyenv, но если бы я использовал его, я мог бы рассмотреть возможность не связывать его с conda, а просто полагаться на собственный python (venv, pip) для установки пакетов и позволить pyenv выполнять все управление средой (вместо добавления conda поверх него).

Оригинальный ответ:

Я не думаю, что с conda нет ничего плохого, скорее введенная вами команда, вероятно, вызываетродной python в вашей системе, а не conda.

Эти команды позволят вам увидеть, какой путь вы вызываете:

# for linux/mac
which python

# for windows
where python

Если то, что он показывает, яЧто-то вроде /usr/bin/python (для linux / mac), тогда это не тот экземпляр conda python, который вы вызываете.

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

# taking your example it looks like your python is in
# {HOME}/.pyenv/versions/miniconda3-latest
{HOME}/.pyenv/versions/miniconda3-latest/bin/python -c "import numpy"

# or on my computer it is (~ means home):
~/anaconda3/bin/python -c "import numpy"

Надеюсь, это поможет!

...