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

Конда 4.2.13 MacOSX 10.12.1

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

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

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

conda create -n shrink_venv

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

source activate shrink_venv

Затем я могу видеть в терминале, что я работаю в моем env (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 для пакетов, но у меня была проблема с подушкой от Anaconda, поэтому я хотел получить ее от pipи так как документы говорят, что все в порядке.

Выход из which -a pip:

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

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

23 ответа

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

  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,

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

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

Если в качестве пипса по умолчанию вы используете плагин 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 -m pip install <package>

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

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

pip install package-name

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

conda install package-name

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

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

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

Проверьте свою версию пипа с 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

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

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

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

[pip install anaconda]

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

conda create -n env_name pip

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

source activate env_name
conda install pip

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

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

Чтобы обеспечить использование пипса, установленного внутри среды conda, без необходимости ввода длинных /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" "$@"
}

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

python -m pip install Pillow

Будет использоваться pip текущего Python, активированного с помощью

source activate shrink_venv

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

Задний план

  • PIP - только менеджер пакетов Python
  • Conda - менеджер пакетов и среды для многих языков, включая Python

Устанавливайте Pip по умолчанию каждый раз, когда вы создаете новую среду conda

      # this installs pip for your newly created environment
conda create -n my_new_env pip 

# activate your new conda environment
conda activate my_new_env

# now you can install any packages using both conda and pip
conda install package_name

#or
pip install package_name

Это дает вам возможность устанавливать любые пакеты в среде conda, даже если они недоступны в conda (например, wordcloud).

      conda activate my_new_env

# will not work as wordcloud is not available in conda
conda install wordcloud

# works fine
pip install wordcloud

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

sudo $(which pip) install <instert_package_name>

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

Explainaton

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

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

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

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

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

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

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

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

Все вышеперечисленные ответы в основном основаны на использовании 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 в приведенной ниже команде.

Судо /home/prabhakar/anaconda3/bin/pip устанавливать <package-name>

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

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

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

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

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

conda install pip
pip install see

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

Зависит от того, как вы настроили переменную окружения 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 apt install python3-pip -> новые пакеты не будут добавлены в список conda (поэтому они не управляются conda), но вы все равно сможете их использовать (вероятность конфликта).

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

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

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

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

Учитывая информацию, описанную в этом сообщении в блоге Anaconda , я думаю, что наилучшей практикой будет создание файла среды, чтобы ваши среды conda можно было создавать предсказуемо.

Я попробовал несколько ответов, размещенных здесь, без успеха, и мне не хотелось возиться с путями python и т. Д. Вместо этого я добавилenvironment.ymlфайл похожий на этот:

      name: your-environment-name
channels:
  - defaults
dependencies:
  - python=3.9.12
  - requests=2.28.1
  - pandas=1.4.4
  - pip=21.2.4
  - pip:
    - python-dotenv==0.19.2

Это гарантирует, что вы сначала установите все зависимости conda, затем установите pip в среде conda и используете его для установки зависимостей, недоступных через conda. Это предсказуемо, многократно используется и следует советам, описанным в сообщении в блоге.

Затем вы создаете новую среду conda, используя файл с помощью этой команды:

      conda env create -f environment.yml

У меня возникла та же проблема, когда я устанавливал пакеты с помощью команды pip в среде Anaconda. Было сказано, что пакет уже установлен, но он не был установлен в среде Anaconda, а не в общесистемных пакетах. Я столкнулся с этим, когда использовал ssh-соединение с сервером.

Вот однострочное решение, которое работает как по волшебству:

      $(which python) -m pip install <package-name>

Нет необходимости выполнять дополнительные установки и настройки путей. Добавлениемпрежде чем пип будет работать все в соответствии с ожиданиями.

Наслаждаться.

Сегодня я часами просматривал этот ответ и многие другие ответы и не мог понять это с 30-летним опытом программирования.

я побежал:

      conda create -n myenv python=3.9
conda activate myenv

и не мог использовать pip. Однако в другой среде, такой как myenv2, myenv3, myenv4, это сработало.

Я получал ужасную ошибку httpsconnection urllib3.

Так что подумал, что это должна быть ошибка отсутствия urllib3 или что-то еще. Оказывается, это было гораздо более зловещим, чем это. К сожалению, это работает в других средах, и я думал, что это связано с тем, что я использую Debian в Windows 10 с WSL2. Исправление было простым:

      rm -rf $HOME/.cache

Кэш пипсов был искажен из-за предыдущей установки той же среды. Вероятно, из-за того, что я запустил обновление на базе conda и обновил дистрибутив. Поскольку я хочу запустить производственную систему с apache2, используя среду WSGI с flask, я хочу всегда иметь одно и то же имя экземпляра conda. Так что это было необходимо исправить!

Все, что вам нужно сделать, это активировать вашу среду:

      $ conda activate <env-name>

Затем установите pip, если pip или pip3 не найдены в среде.

      $ conda install pip

Используйте pip или pip3 как

      $ pip3 install <pkg-name>

Я знаю, что исходный вопрос был о conda под MacOS. Но я хотел бы поделиться своим опытом работы с Ubuntu 20.04.

В моем случае проблема была связана с псевдонимом, определенным в ~/.bashrc: alias pip='/usr/bin/pip3'. Этот псевдоним имел приоритет над всем остальным.

Итак, в целях тестирования я удалил псевдоним running unalias pipкоманда. Тогда соответствующиеpip активной среды conda была выполнена правильно.

Та же проблема была применима к python команда.

Удалите дублированную установку Python. Просто сохраните anaconda и создайте env с желаемой версией python, как указано здесь: https://docs.conda.io/projects/conda/en/latest/user-guide/tasks/manage-python.html . Тогда ваши версии python и pip будут меняться при переключении между env.

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

Я пытался установитьpycorenlpсAnaconda Prompt. Однако у меня это не сработало. Итак, я установилpipс использованиемconda install pip. Затем я выполнилpip install pycorenlp, и это сработало.

      # activate base env
conda activate
# now install your package
python -m pip install <package>
# -m mod : run library module as a script..
Другие вопросы по тегам