Использование Pip для установки пакетов в среду Anaconda

178

Конда 4.2.13 MacOSX 10.12.1

Я пытаюсь установить пакеты из pipсвежей среды (виртуальной), созданной с помощью anaconda. В документах Anaconda сказано, что это прекрасно. Это делается так же, как и для virtualenv.

Активируйте среду, в которую вы хотите поместить программу, затем установите программу pip ...

Я создал пустую среду в Ananconda следующим образом:

conda create -n shrink_venv

Активируйте это:

source activate shrink_venv

Затем я могу видеть в терминале, что я работаю в моей среде (shrink_venv). Проблема возникает, когда я пытаюсь установить пакет, используя pip:

(shrink_venv): pip install Pillow

Requirement already satisfied (use --upgrade to upgrade): Pillow in /Library/Python/2.7/site-packages

Таким образом, я вижу, что он думает, что требование удовлетворено из общесистемного пакета. Таким образом, кажется, что среда не работает должным образом, определенно не так, как сказано в документации. Я что-то здесь не так делаю?

Просто заметьте, я знаю, что вы можете использовать conda installдля пакетов, но у меня была проблема с Подушкой от Анаконды, поэтому я хотел получить ее pip, и, поскольку документы говорят, что это хорошо.

Выход which -a pip:

/usr/local/bin/pip
/Users/my_user/anaconda/bin/pip

** ОБНОВЛЕНИЕ ** Я вижу, что это довольно распространенная проблема. Я обнаружил, что conda env не очень хорошо работает с PYTHONPATH. Система, кажется, всегда смотрит в локации PYTHONPATH, даже когда вы используете среду conda. Теперь я всегда запускаю unset PYTHONPATHпри использовании среды conda, и она работает намного лучше. Я на маке.

jeffery_the_wind
источник
9
Вы пробовали conda install pip?
Том
4
Можете ли вы добавить вывод which -a pipна ваш вопрос, пожалуйста?
чел
1
У вас есть PYTHONPATHпеременная окружения?
Дартбит с
1
была похожая проблема. Явное использование пипа, которая является частью Анаконды, похоже, мне помогло.
Арсен Люпин
1
действительно ли безопасно устанавливать вещи, используя pip и conda? Я думал, что вы можете столкнуться с проблемами, например, не зная, какую версию исправить, чтобы удалить ...
Чарли Паркер

Ответы:

203

Для других, кто столкнулся с этой ситуацией, я нашел это наиболее простым решением:

  1. Запустите conda create -n venv_nameи source activate venv_name, где venv_nameимя вашей виртуальной среды.

  2. Беги conda install pip. Это установит pip в ваш каталог venv.

  3. Найдите свой каталог anaconda и найдите актуальную папку venv. Это должно быть где-то как /anaconda/envs/venv_name/.

  4. Установите новые пакеты, выполнив /anaconda/envs/venv_name/bin/pip install package_name.

Теперь он должен успешно установить пакеты, используя пип этой виртуальной среды!

ветряная мельница
источник
2
binИзменился ли путь к папке? Я больше не вижу его в venv_nameпапке?
Джек
Только что попытался создать новый венв, похоже, что binвсе еще в том же месте.
Ветряная мельница
2
У меня не было папки «bin», поэтому вышеописанные шаги помогли. Одна вещь, которую я хотел бы добавить, - это запуск команды «which pip», которая помогает определить, какой «pip» фактически устанавливает пакеты, а «pip freeze» выдает список установленных в среде пакетов
Mykola
2
У меня есть ситуация, когда, хотя мой источник активирован, мои установки не происходят в среде. Они установлены в расположении по умолчанию на python.
Saisumanth Gopisetty
4
Ответ на этот вопрос в значительной степени: Run pipот Вашего Конда окр (будь то среда или нет), и установите пакет , который вы хотите с помощью pipисполняемого файла в папке Конда (мой случай: AppData\Local\Continuum\anaconda3\Scripts)
Мануэль Мартинес
80

Все, что вам нужно сделать, это открыть Anaconda Prompt и набрать

pip install package-name

Он автоматически установится в среду anaconda без использования

conda install package-name

Поскольку некоторым пакетам conda может не хватить поддержки, необходимо установить их с помощью pip, и это один из способов сделать это.

Если у вас установлен pip в anaconda, вы можете запустить следующее в блокноте jupyter или в своей оболочке python, связанной с anaconda.

pip.main(['install', 'package-name'])

Проверьте вашу версию pip с pip.__version__. Если это версия 10.x.xили выше, установите пакет Python с этой строкой кода

subprocess.check_call([sys.executable, '-m', 'pip', 'install', '--upgrade', 'package-name'])

В своем блокноте jupyter вы можете таким образом устанавливать пакеты python через pip в ячейку;

!pip install package-name

или вы можете использовать версию Python, связанную с Anaconda

!python3.6 -m pip install package-name
sambeth
источник
6
как вы «открываете подсказку Анаконды»
Томас Браун
3
В окнах вы должны искать «подсказку анаконды», используя значок поиска или ввод, найденный на панели задач, и открывать
sambeth
@ Sambeth на Mac?
Партхапратим Неог
1
Я думаю, ключ в том, чтобы запустить пункт вашей анаконды, который находится под вашей глобальной анакондой или конкретной средой.
matanster
2
Этот ответ неверен. Весь вопрос в том, что иногда он не устанавливается в среде. Он устанавливается глобально. Чтобы предотвратить это, вы должны сначала запустить conda install pipвнутри среды, чтобы убедиться, что вы используете локальную версию pip.
крестьянин
33

Я решил эту проблему следующим образом:

Если у вас в качестве пипса по умолчанию используется плагин non-conda, но python по умолчанию - это python по умолчанию (как показано ниже)

>which -a pip
/home/<user>/.local/bin/pip   
/home/<user>/.conda/envs/newenv/bin/pip
/usr/bin/pip

>which -a python
/home/<user>/.conda/envs/newenv/bin/python
/usr/bin/python

Затем вместо простого вызова pip install <package>вы можете использовать флаг модуля -mс python, чтобы он использовал python anaconda для установки

python -m pip install <package>

Это устанавливает пакет в каталог библиотеки anaconda, а не в каталог библиотеки, связанный с (не-anaconda) pip

alex_danielssen
источник
3
Это должно быть ответом. Отлично работает на Windows.
Джорди
9

Если вы не добавили pip при создании среды conda

conda create -n env_name pip

а также не установил pip внутри среды

source activate env_name
conda install pip

тогда единственный пип, который вы получили, это системный пип, который установит пакеты по всему миру.

Шина, как вы можете видеть в этой проблеме , даже если вы выполнили одну из процедур, упомянутых выше, поведение pip в среде conda все еще не определено.

Чтобы гарантировать использование pip, установленного внутри среды conda, без необходимости ввода longy /home/username/anaconda/envs/env_name/bin/pip, я написал функцию оболочки:

# Using pip to install packages inside conda environments.
cpip() {
    ERROR_MSG="Not in a conda environment."
    ERROR_MSG="$ERROR_MSG\nUse \`source activate ENV\`"
    ERROR_MSG="$ERROR_MSG to enter a conda environment."

    [ -z "$CONDA_DEFAULT_ENV" ] && echo "$ERROR_MSG" && return 1

    ERROR_MSG='Pip not installed in current conda environment.'
    ERROR_MSG="$ERROR_MSG\nUse \`conda install pip\`"
    ERROR_MSG="$ERROR_MSG to install pip in current conda environment."

    [ -e "$CONDA_PREFIX/bin/pip" ] || (echo "$ERROR_MSG" && return 2)

    PIP="$CONDA_PREFIX/bin/pip"
    "$PIP" "$@"
}

Надеюсь, что это полезно для вас.

Аллен Е
источник
8

Это то, что работает для меня (см. Ссылку на изображение)

  1. Открытая Анаконда
  2. Выберите Среды в левой панели под домом
  3. Справа от того места, где вы выбрали, и под панелью «сред поиска», вы должны увидеть основание (root). Нажмите здесь
  4. Должен появиться треугольник, указывающий вправо, нажмите на него и выберите «открыть терминал»
  5. Используйте обычную команду pip install здесь. Нет необходимости указывать на среду / путь

Для дальнейшего использования вы можете найти папку, в которую загружаются ваши пакеты, если вы удовлетворяете требованиям. Вы можете увидеть это, если прокрутите вверх в терминале. Следует читать что-то вроде: требование уже выполнено, а затем путь

[ pip install anaconda]

modatamoproblems
источник
3

Для желающих установить небольшое количество пакетов в conda с помощью pip, используя

sudo $(which pip) install <instert_package_name>

работал на меня.

Explainaton

В любом случае, мне кажется, что which pipэто очень надежный способ найти путь к conda env pip туда, где вы находитесь. Однако при использовании sudoэто, кажется, перенаправляет пути или иным образом нарушает это.

Использование $(which pip)выполняет это независимо от sudoили любой из команд и похоже на запуск /home/<username>/(mini)conda(3)/envs/<env_name>/pipв Linux. Это потому, что $()запускается отдельно, а текстовый вывод добавляется во внешнюю команду.

Маленькие Бобби Столы
источник
3

Все вышеперечисленные ответы в основном основаны на использовании virtualenv. У меня просто свежая установка anaconda3, и в ней не установлено ни одного virtualenv. Итак, я нашел лучшую альтернативу, не задумываясь о создании virtualenv.

Если у вас много версий pip и python, установленных в linux, сначала запустите команду ниже, чтобы получить список всех установленных путей pip.

где пипс

Вы получите что-то подобное в качестве вывода.

pip: / usr / bin / pip /home/prabhakar/anaconda3/bin/pip/usr/share/man/man1/pip.1.gz

Скопируйте путь pip, который вы хотите использовать для установки вашего пакета, и вставьте его после замены sudo /home/prabhakar/anaconda3/bin/pipв приведенной ниже команде.

sudo /home/prabhakar/anaconda3/bin/pipinstall<package-name>

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

Прабхакар Прасад
источник
3

Если вы используете ОС Windows, откройте Anaconda Prompt и введитеactivate yourenvname

И если вы используете ОС Mac или Linux, откройте терминал и введитеsource activate yourenvname

yourenvname здесь ваша желаемая среда, в которой вы хотите установить пакет pip

после ввода вышеуказанной команды вы должны увидеть, что имя вашей среды изменяется с baseвашей типизированной среды yourenvnameв выводе консоли (что означает, что вы сейчас находитесь в нужном контексте среды)

Тогда все, что вам нужно сделать, это обычная pip installкоманда, напримерpip install yourpackage

Таким образом, пакет pip будет установлен в вашей среде Conda

Code_Worm
источник
3

python -m pip install Pillow

Будет использовать пункт текущего Python, активированный с

source activate shrink_venv

intsco
источник
3

Зависит от того, как вы настроили переменную среды PATH. Когда ваша оболочка разрешит вызов pip, какой первый бин он найдет?

(test)$ whereis pip
pip: /home/borja/anaconda3/envs/test/bin/pip /home/borja/anaconda3/bin/pip

Убедитесь, что папка bin из вашей установки anaconda находится перед / usr / lib (в зависимости от того, как вы установили pip). Итак, пример:

(test) borja@xxxx:~$ pip install djangorestframework
....
Successfully installed asgiref-3.2.3 django-3.0.3 djangorestframework-3.11.0 pytz-2019.3 sqlparse-0.3.1

(test) borja@xxxx:~$ conda list | grep django
django                    3.0.3                    pypi_0    pypi
djangorestframework       3.11.0                   pypi_0    pypi

Мы видим, что djangorestframework был установлен в моей тестовой среде, но если я проверю свою базу:

(base) borja@xxxx:~$ conda list | grep django

Пусто

Лично мне нравится обрабатывать все мои настройки PATH с использованием .pam_environment , вот пример:

(base) borja@xxxx:~$ cat .pam_environment
PATH DEFAULT=/home/@{PAM_USER}/anaconda3/bin:${PATH}

Один дополнительный коммент. Способ установки pip может создать проблемы:

  • Вы должны использовать: conda install pip -> новые пакеты, установленные с pip, будут добавлены в список conda.

  • Вы shodul НЕ использовать: SUDO меткое установить python3-пип -> новые пакеты не будут добавлены в список Конда (так не управляется Конда) , но вы все равно будете иметь возможность использовать их (вероятность конфликта).

BorjaEst
источник
Один дополнительный коммент. Способ установки pip может создать проблемы: - Вы должны использовать: conda install pip -> новые пакеты, установленные с pip, будут добавлены в список conda. - Вы НЕ ДОЛЖНЫ использовать: sudo apt install python3-pip -> новые пакеты не будут добавлены в список conda (поэтому не будут управляться), но вы все равно сможете их использовать (вероятность конфликта).
BorjaEst
Привет всем :) Как я могу удалить папку bin, как /usr/libв случае, если она находится перед моей папкой anaconda bin при запуске whereis pip?
Ленн
Попробуйте sudo apt remove python3-pipудалить пип из вашего дистрибутива Linux , а затем в Конде среде вы используете: conda install -c anaconda pip.
BorjaEst
2

Я столкнулся с проблемой при установке неконда пакета на anaconda, я последовал наиболее понравившемуся здесь ответу, и он не подошел (возможно, потому что мой anaconda находится в каталоге F, а env создан был в C, а папка bin не была создана, Понятия не имею, но это не сработало).

По словам Anaconda, pip уже установлен (который находится с помощью команды " conda list" в приглашении anaconda), но пакеты pip не были установлены, поэтому вот что я сделал, я снова установил pip, а затем pip установил пакет.

conda install pip
pip install see

see это неконда пакет.

Абхиджит Синха
источник
2

Ну я перепробовал все вышеперечисленные методы. Никто не работал для меня. У меня сработало следующее:

  1. Активируйте свою среду
  2. Загрузите пакет .whl вручную с https://pypi.org/simple/ /
  3. Перейдите в папку, в которую вы скачали .whl, из командной строки с активированной средой.
  4. выполнить: pip install имя_пакета_повторы.whl
MGLondon
источник
1

Если вы ТОЛЬКО хотите установить conda. Просто удалите все остальные пути Python из вашей переменной PATH.

Оставляя только:

C:\ProgramData\Anaconda3
C:\ProgramData\Anaconda3\Scripts
C:\ProgramData\Anaconda3\Library\bin

Это позволяет вам просто использовать, pip install *и он будет установлен прямо в вашу установку conda.

мото
источник
-1

Просто activate shrink_venvсделаю так же. Я попытался создать новую среду, и моя установка conda не позволяет мне использовать источник в начале.

Елизавета Факу
источник
Вам не нужно sourceв начале, если вы находитесь на Windows
KWx