Использование 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 ответа
Для других, кто столкнулся с этой ситуацией, я нашел это наиболее простым решением:
Бежать
conda create -n venv_name
а такжеsource activate venv_name
, гдеvenv_name
это имя вашей виртуальной среды.Бежать
conda install pip
, Это установит pip в ваш каталог venv.Найдите свой каталог anaconda, и найдите актуальную папку venv. Это должно быть где-то как
/anaconda/envs/venv_name/
,Установите новые пакеты, выполнив
/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
Это то, что сработало для меня (см. Изображение по ссылке)
- Откройте Анаконду
- Выберите Среды на левой панели под домом.
- Справа от того места, где вы выбрали, и под панелью "среды поиска" вы должны увидеть базу (корень). Нажмите здесь
- Должен появиться треугольник, указывающий вправо, щелкните по нему и выберите "открыть терминал".
- Используйте здесь обычную команду pip install. Нет необходимости указывать на среду / путь
Для дальнейшего использования вы можете найти папку, в которую загружаются ваши пакеты, если у вас уже есть требования. Вы можете увидеть это, если прокрутите вверх в терминале. Он должен выглядеть примерно так: требование уже выполнено, а затем путь
[]
Если вы не добавили 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>
Это сработало очень хорошо для меня. Если у вас возникли проблемы с установкой, пожалуйста, прокомментируйте.
Хорошо, я попробовал все вышеперечисленные методы. У меня ничего не работало. Для меня сработало следующее:
- Активируйте свою среду
- Загрузите пакет.whl вручную с https://pypi.org/simple//
- Перейдите в папку, в которую вы загрузили.whl из командной строки с активированной средой.
- выполнить: 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..