Я установил и использую дистрибутив Anaconda Python, и я начал использовать среду Anaconda (Conda). Я могу использовать стандартную conda install...
команду для помещения пакетов из дистрибутива в свои среды, но для использования чего-либо внешнего (например, Flask-WTF, flask-sqlalchemy и alembic) мне нужно использовать pip install
в активной среде. Однако, когда я смотрю на содержимое среды, либо в каталоге, либо с использованием conda list
этих pip install
пакетов ed, они не отображаются.
Использование pip freeze
и pip list
просто перечисляет все пакеты, которые я когда-либо устанавливал.
Есть ли способ отслеживать, что находится в каждой из моих Anaconda env
(как в обеих, так pip
и в conda
установленных)?
pip
установленныйconda
, например~/anaconda/bin/pip
. Используйте его для установки пакетов вconda
среду, а также для просмотра объединения пакетов, установленных с этимpip
и сconda install
.conda list
какое-то время теперь включает пакеты Python, которые были установлены другими способами (например, pip, easy-install, напрямую с помощьюpython setup.py install
и т. д.)Ответы:
conda-env теперь делает это автоматически (если pip был установлен с conda).
Вы можете увидеть, как это работает, используя инструмент экспорта, используемый для миграции среды:
В файле будут перечислены как пакеты conda, так и пакеты pip:
name: stats channels: - javascript dependencies: - python=3.4 - bokeh=0.9.2 - numpy=1.9.* - nodejs=0.10.* - flask - pip: - Flask-Testing
Если вы хотите завершить экспорт среды, перейдите
environment.yml
на новый хост-компьютер и запустите:источник
-pip:
разделе отмечены все пакеты, которые были установлены через pip. Кроме того, насколько мне известно,conda env export
никогда не будет генерироваться значения соответствия семвар , как-nodejs=0.10.*
показано в этом примере. Это даст явное значение, например,-nodejs=0.10.1
и вам нужно будет поставить,*
если это то, что вы хотите. Если бы он мог обрабатывать сопоставление семваров, это было бы здорово, и я был бы рад услышать, как сделать это волшебство. :)conda
будет отслеживать только установленные пакеты. Иpip
предоставит вам пакеты, которые были либо установлены с помощью самогоpip
установщика, либо они использовалиsetuptools
в своейsetup.py
сборке, поэтому сборка conda сгенерировала информацию о яйцах. Итак, у вас есть три основных варианта.Вы можете объединить пакеты
conda list
иpip freeze
и управлять пакетами, которые были установлены с помощьюconda
(которые показаны вconda list
), с помощьюconda
диспетчера пакетов, а те, которые установлены с помощьюpip
(которые отображаются,pip freeze
но не входятconda list
), с помощьюpip
.Установите в среде только
python
,pip
иdistribute
пакеты и управлять всем сpip
. (Это не так тривиально, если вы работаете в Windows ...)Создавайте собственные
conda
пакеты и управляйте всем с помощьюconda
.Я бы лично порекомендовал третий вариант, поскольку создавать
conda
пакеты очень просто . В github-аккаунте континуума есть репозиторий примеров рецептов. Но обычно все сводится к:или просто:
Также, когда вы создали их один раз, вы можете загрузить их на https://binstar.org/ и просто установить оттуда.
Тогда у вас все получится с помощью
conda
.источник
~/anaconda/bin/pip install memory-profiler
иconda install numba
, и они оба показаны в~/anaconda/bin/pip freeze
.conda install C:\...PACKAGE-0.0.0-py27_0.tar.bz2
как описано в stackoverflow.com/a/20750388/125507conda install python=3.x.y
среду conda, чтобы последующие установки pip проходили через установленную pip conda.Существует ветка conda (new-pypi-install), которая добавляет лучшую интеграцию с pip и PyPI. В частности, в списке conda также будут показаны установленные пакеты pip, и установка conda сначала попытается найти пакет conda, и в случае сбоя, который будет использовать pip для установки пакета.
Планируется, что эта ветка будет объединена позже на этой неделе, чтобы версия 2.1 conda имела лучшую интеграцию pip с conda.
источник
conda install package
а он не сможет найти рецепт conda, он попытается установить его черезpip
(а затем отслеживает его). Он даже предлагает установить,pip
если не в вашей среде. Спасибо Трэвису за всю вашу работу!conda install autopep8
он сообщает мне: «Пакет не найден» и что мне нужно выполнить поиск на anaconda.org вручную.running pip...
тоже не работает, он вообще не будет искать пакет conda.Я последовал за ответом @Viktor Kerkez и имел смешанный успех. Я обнаружил, что иногда этот рецепт
будет выглядеть так, будто все работает, но мне не удалось успешно импортировать ПАКЕТ. Недавно я спросил об этом в группе пользователей Anaconda и услышал от самого @Travis Oliphant, как лучше всего использовать conda для создания пакетов, которые не поставляются с Anaconda, и управления ими. Вы можете прочитать эту ветку здесь , но я опишу подход ниже, чтобы, надеюсь, сделать ответы на вопрос OP более полными ...
Пример: я собираюсь установить отличный пакет prettyplotlib в Windows с помощью conda 2.2.5.
1а)
conda build --build-recipe prettyplotlib
Вы увидите, что все сообщения сборки выглядят хорошо до последнего раздела ТЕСТ сборки. Я видел эту ошибку
1b) Зайдите в / conda-recipes / prettyplotlib и отредактируйте файл meta.yaml. В настоящее время пакеты, настраиваемые, как на шаге 1a, приводят к файлам yaml с ошибкой в
test
разделе. Например, вот как я искалprettyplotlib
test: # Python imports imports: - - prettyplotlib - prettyplotlib
Отредактируйте этот раздел, чтобы удалить пустую строку, перед которой стоит -, а также удалите лишнюю строку prettyplotlib. На момент написания этой статьи я обнаружил, что мне нужно отредактировать большинство таких файлов meta.yaml для внешних пакетов, которые я устанавливаю с помощью conda, что означает, что есть пустая строка импорта, вызывающая ошибку вместе с избыточным импортом данного пакета .
1c) Повторите команду из 1a, которая на этот раз должна завершиться без ошибок. В конце сборки вас спросят, хотите ли вы загрузить сборку в binstar . Я ввел "Нет" и увидел это сообщение:
Этот файл tar.bz2 - это сборка, которую вам теперь нужно установить.
2)
conda install C:\Anaconda\conda-bld\win-64\prettyplotlib-0.1.3-py27_0.tar.bz2
Следуя этим шагам, я успешно использовал conda для установки ряда пакетов, которые не поставляются с Anaconda. Раньше я устанавливал некоторые из них с помощью pip, поэтому я сделал
pip uninstall PACKAGE
перед установкой PACKAGE с помощью conda. Используя conda, я теперь могу управлять (почти) всеми моими пакетами с помощью единого подхода, вместо того, чтобы устанавливать сочетание компонентов с помощью conda, pip, easy_install и python setup.py install.Для контекста, я думаю, что эта недавняя запись в блоге @Travis Oliphant будет полезна для таких людей, как я, которые не ценят все, что входит в надежную упаковку Python, но определенно ценят, когда все «просто работает». conda кажется отличным шагом вперед ...
источник
Вот почему я написал Picky: http://picky.readthedocs.io/
Это пакет python, который отслеживает пакеты, установленные с помощью pip или conda в окружениях virtualenvs и conda.
источник
Я думаю, что здесь не хватает того, что когда вы делаете:
чтобы установить локальный пакет с помощью setup.py, он устанавливает пакет, видимый для всех окружений conda, использующих одну и ту же версию python. Обратите внимание, что я использую версию pip для conda!
например, если я использую python2.7, он помещает сюда локальный пакет:
/usr/local/anaconda/lib/python2.7/site-packages
Если позже я создам новый conda env с python = 2.7 (= по умолчанию):
А затем сделайте:
(new)>conda list // empty - conda is not aware of any packages yet
Однако если я это сделаю:
(new)>pip list // the local package installed above is present
Таким образом, в этом случае conda не знает о пакете pip, но пакет доступен для python.
Однако, если я вместо этого установлю локальный пакет (снова используя pip) после того, как я создал (и активировал) новый conda env, теперь conda его увидит:
(new)>conda list // sees that the package is there and was installed by pip
Поэтому я думаю, что взаимодействие между conda и pip имеет некоторые проблемы - то есть использование pip для установки локального пакета из одного conda env делает этот пакет доступным (но не видимым через список conda) для всех других conda env той же версии python.
источник
conda env export
перечисляет все пакеты conda и pip в среде.conda-env
должен быть установлен в корень conda (conda install -c conda conda-env
).Чтобы написать
environment.yml
файл, описывающий текущую среду:Ссылки:
источник
Обычно я добавляю префикс папки bin / pip для конкретной среды, в которую вы хотите установить пакет, перед командой pip. Например, если вы хотите установить pymc3 в среде py34, вы должны использовать эту команду:
Вам просто нужно найти правильный путь к папке bin / pip вашей среды и поместить его перед командой установки.
источник
Мой
which pip
показывает следующий путь:Итак, какой бы пакет я ни установил,
pip install <package-name>
он должен быть отражен в списке пакетов при экспорте списка с использованием:Но я не знаю. Итак, вместо этого я использовал следующую команду, как было предложено несколькими другими:
# get environment name by $ conda-env list # get list of all installed packages by (conda, pip, etc.,) $ conda-env export -n <my-environment-name> > all_packages.yml # if you haven't created any specific env, then just use 'root'
Теперь я вижу все пакеты в моем
all-packages.yml
файле.источник
Вы можете начать с установки приведенной ниже команды в среде conda:
conda install pip
Затем следует установка всех необходимых пакетов в среде.
После установки всех пакетов conda и pip для экспорта среды используйте:
conda env export -n <env-name> > environment.yml
Это создаст необходимый файл в папке
источник