Как изменить стандартную среду Python Anaconda

170

Я установил Anaconda и создал две дополнительные среды: py3k (которая содержит Python 3.3) и py34 (которая содержит Python 3.4). Кроме того, у меня есть среда по умолчанию с именем root, которую установщик Anaconda создал по умолчанию и которая содержит Python 2.7. Этот последний является значением по умолчанию, каждый раз, когда я запускаю «ipython» из терминала, он дает мне версию 2.7. Для работы с Python 3.4 мне нужно выполнить команды (в оболочке)

source activate py34
ipython

которые меняют среду по умолчанию на Python 3.4. Это прекрасно работает, но это раздражает, так как большую часть времени я работаю на Python 3.4 вместо Python 2.7 (который я придерживаюсь в учебных целях, это довольно длинная история). В любом случае, я хотел бы знать, как изменить среду по умолчанию на Python 3.4, учитывая, что я не хочу переустанавливать все с нуля.

user2734434
источник
7
Вы рассматривали возможность использования source activate py34в вашем .bashrc?
чел
1
Спасибо за Ваш ответ. Я не пробовал, потому что я думаю, что невозможно вызвать активацию источника из скрипта bash, так как команду источника нужно запускать в той же оболочке, а не в подоболочке. Я попытался поместить две строки выше в скрипт bash, и это, я могу сказать, не работает.
user2734434 10.02.15
4
У меня CONDA_ROOT="/Users/bla/miniconda"и source ${CONDA_ROOT}/bin/activate ${CONDA_ROOT}/envs/empty &> /dev/nullпо моему .bashrcи вроде нормально работает.
чел
1
Я думаю, что .bashrcон запускается не как скрипт, а из новой оболочки, поэтому вы не можете проверить это, запустив bash-скрипт.
чел
3
@ user2734434 файл bashrc поставляется в начале сеанса, поэтому, если вы добавите source activateего, это повлияет на среду оболочки.
asmeurer

Ответы:

86

Если вы просто хотите перейти в другую среду, используйте

source activate environment-name

(вы можете создать environment-nameс помощью `conda create)


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

Во-первых, убедитесь, что у вас последняя версия conda, запустив

conda update conda

Тогда беги

conda install python=3.5

Это попытается обновить все ваши пакеты в корневой среде до версий Python 3. Если это невозможно (например, потому что какой-то пакет не собран для Python 3.5), он выдаст вам сообщение об ошибке, указывающее, какой пакет (ы) вызвал проблему.

Если вы установили пакеты с помощью pip, вам придется их переустановить.

asmeurer
источник
1
@flutefreak Теперь он действительно будет работать в Windows ( conda update condaсначала запустите, чтобы убедиться, что у вас последняя версия). Я обновлю ответ.
asmeurer
126
Этот ответ, похоже, не связан с вопросом, касающимся изменения среды по умолчанию.
Боб
16
@asmeurer Но об этом не спрашивают. Он не хочет обновлять пакеты в любой среде. Он хочет сделать py34 средой по умолчанию, чтобы она была активной без вмешательства, поэтому py34 активен до того, как отправит команду «source activ».
Боб
20
Я должен согласиться с @Bob здесь. Пакеты в корневой среде будут обновлены до версии 3.5, и это, возможно, решило специфическую проблему оригинального постера. Но когда вы открываете приглашение, вы по-прежнему находитесь в корневой среде, поэтому вы не указали другую среду по умолчанию. Так как каждый, кто хочет достичь этого и гуглит, в конечном итоге решает этот вопрос, было бы лучше, если бы на исходные вопросы также был дан ответ. Возможно, изменение env по умолчанию на что-то кроме root невозможно?
Арджан
4
Это не работает для меня. По умолчанию у меня python 3.4, использование флага python=3.5не обновляло python с 3.4 до 3.5 ... Есть предложения?
WillZ
56

Обзор
Некоторые люди имеют несколько сред Anaconda с разными версиями python по причинам совместимости. В этом случае у вас должен быть скрипт, который устанавливает среду по умолчанию. С помощью этого метода вы можете сохранить версии Python, которые вы используете в своих средах.

Далее предполагается, что environment_name - это имя вашей среды

Mac / Linux:
отредактируйте свой профиль bash, чтобы последняя строка была source activate environment_name. В Mac OSX это ~ / .bash_profile, в других средах это может быть ~ / .bashrc

Пример:
вот как я это сделал на Mac OSX

  1. Откройте терминал и введите:

    nano ~/.bash_profile

  2. Перейдите в конец файла и введите следующее, где «p3.5» - это моя среда:

    source activate p3.5

  3. Выходной файл. Запустите новое окно терминала.

  4. Введите следующее, чтобы увидеть, какая среда активна

    conda info -e

Результат показывает, что я использую мою среду p3.5 по умолчанию.

Для Windows:
создайте командный файл (.cmd) activate environment_nameи следуйте этим инструкциям, чтобы он выполнялся при каждом открытии командной строки.

  1. Создайте команду пакетного файла, например «my_conda.cmd», поместите ее в папку «Данные приложения».
  2. Настройте его на автоматический запуск при каждом открытии cmd. Этот параметр находится в реестре:
    ключ: HKCU \ SOFTWARE \ Microsoft \ Command
    Значение процессора : автозапуск
    тип: REG_EXPAND_SZ
    данные: "% AppData% \ my_conda.cmd"

из этого ответа: https://superuser.com/a/302553/143794

Кулак ярости
источник
1
Большое спасибо. Я обнаружил, что с моей версией Mac я не могу избавиться от Python 2 - поэтому выполнил рекомендованное действие по настройке двух отдельных сред, но было очень неприятно помнить об активации среды в каждом новом окне терминала. Это работает!
Ливви Джеффс
Это приводит к поломке канала и зависанию командной строки, когда я делаю это под Windows 10.
aaronsnoswell
Кому-нибудь на Windows 10 повезет больше с этим?
Wassadamo
3
Это должен быть принятый ответ (по крайней мере, для Conda на основе Unix)!
Саймон Ван Мачин
50

Под Linux есть более простой способ установить среду по умолчанию, изменив ~/.bashrcили, ~/.bash_profile в конце концов, вы найдете что-то вроде

# added by Anaconda 2.1.0 installer
export PATH="~/anaconda/bin:$PATH"

Замени это

# set python3 as default
export PATH="~/anaconda/envs/python3/bin:$PATH"

и это все, что нужно сделать.

Jev
источник
3
И в чем вопрос?
Дитер Мимкен
Я попробовал это решение, но оно все еще показывает anaconda2 на моем пути, есть идеи?
Уильям Росс
10
Это не устанавливает среду по умолчанию. Похоже, что он обходит conda и притворяется, что «python3» используется по умолчанию. «conda info -e» по-прежнему показывает «root» в качестве текущей среды. Я все еще ищу способ сказать conda, который по умолчанию.
MrMas
8
Это не устанавливает среду по умолчанию с точки зрения Конды. Похоже, что он обходит conda и притворяется, что «python3» используется по умолчанию. «conda info -e» по-прежнему показывает «root» в качестве текущей среды. Чтобы это исправить, вам также нужно установить CONDA_PREFIX и CONDA_DEFAULT_ENV. Даже тогда ответы по-прежнему взломать; почему бы просто не запустить 'source activ <новая среда по умолчанию>', поскольку это уже предоставляется conda как "встроенный" способ сделать это.
MrMas
Есть .bashrcили .bash_profileна Windows 10? Я нашел один под cygwin, следуя этому jattenberg.github.io/PDS-Fall-2013/assets/install/… . Но я не уверен, что это то, что я должен изменить, чтобы получить желаемую функциональность ОП.
Wassadamo
14

Для Windows Anaconda поставляется с Anaconda Prompt, которая является ярлыком для cmd и может использоваться для запуска команд conda без добавления anaconda в переменную PATH. Найдите его местоположение, скопируйте и переименуйте копию (скажем, myenv_prompt). Щелкните правой кнопкой мыши myenv_prompt и выберите свойства в контекстном меню.

введите описание изображения здесь

Окно « Целевая форма» окна «Свойства» уже должно быть заполнено текстом, например %windir%\system32\cmd.exe "/K" C:\Users\xxx\AppData\Local\Continuum\Miniconda3\Scripts\activate.bat C:\Users\xxx\AppData\Local\Continuum\Miniconda3\ : «Эта команда состоит из трех частей: 1) start ... \ cmd.exe 2) run ... \ acitvate.bat with environment 3) ... \ Miniconda3 \

Измените 3-ю часть на путь среды (скажем, myenv), который вы хотите использовать по умолчанию, т.е. заполните форму Target примерно так:%windir%\system32\cmd.exe "/K" C:\Users\xxx\AppData\Local\Continuum\Miniconda3\Scripts\activate.bat C:\Users\xxx\AppData\Local\Continuum\Miniconda3\envs\myenv

Теперь myenv_prompt будет действовать как ярлык для запуска cmd с myenv в качестве среды по умолчанию для python. Этот ярлык вы можете сохранить в меню «Пуск» или закрепить на панели задач.

Одним из преимуществ этого метода является то, что вы можете создать несколько ярлыков, каждый из которых имеет свою среду в качестве среды по умолчанию. Также вы можете установить папку по умолчанию, заполнив Start в форме окна Properties

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

PS: Нет необходимости искать Anaconda Prompt и это можно сделать, изменив цель любого ярлыка. Но вам потребуется знать путь к cmd.exe и активировать .bat

Kushdesh
источник
2
Это должен быть главный ответ
Джеймс Маккормак
Я использую этот метод, но моя первая часть немного отличается: C:\Windows\System32\cmd.exe /c start ""не уверен, как я пришел к этому решению, но вот пост, который я сделал относительно его синтаксиса
xtian
8

Смена постоянного

conda install python={version}

Временно изменить

Просмотр вашей среды

запустить conda info --envsв окне терминала или Anconda Prompt

Если это не показывает среду, которую вы хотите установить

запустить conda create -n py36 python=3.6 anacondaдля Python 3.6 изменить версию, как вы предпочитаете

Активация среды (используйте подсказку Anaconda)

запустите activate envnmeenvnme, вы можете найти эту команду conda info --envsв качестве примера, когда вы запустите conda info --envsее, покажите

base * C:\Users\DulangaHeshan\Anaconda3 py36 C:\Users\DulangaHeshan\Anaconda3\envs\py36

тогда беги activate py36

проверить бег python --version

В Windows рекомендуется отключить одну среду перед активацией другой. https://docs.conda.io/projects/conda/en/latest/user-guide/tasks/manage-environments.html?highlight=deactivate%20environment

Дуланга Хешан
источник
3
Я думаю, что OP хочет решение, которое изменяет базовую среду на py36, чтобы им не приходилось activate py36каждый раз запускаться при запуске.
Wassadamo
6

Правильный ответ (по состоянию на декабрь 2018 года) ... вы не можете. Обновление conda install python=3.6может работать, но не может, если у вас есть пакеты, которые необходимы, но не могут быть удалены.

Anaconda использует среду по умолчанию с именем, baseи вы не можете создать новую среду (например, python 3.6) с тем же именем. Это намеренно. Если вы хотите, чтобы ваша базовая Anaconda была python 3.6, правильный способ сделать это - установить Anaconda для python 3.6. Как менеджер пакетов, цель Anaconda заключается в инкапсуляции различных сред, поэтому вы должны активировать в них исходный код и почему вы не можете просто тихо переключать базовый пакет по своему желанию, поскольку это может привести ко многим проблемам в производственных системах.

cgnorthcutt
источник
Что если моя базовая среда не работает, и я хочу заменить ее на ту, которая работает?
эндолит
@endolith Что если моя базовая среда не работает, и я хочу заменить ее на ту, которая работает? Переустановите Conda.
AMC
@AMC Я переустанавливал так много раз. Я хочу способ восстановить хорошее состояние, не переделывая все
эндолит
1
@endolith Вы переустанавливали несколько раз, чтобы решить одну и ту же проблему? Как это закончилось сломано? Мы должны обсудить это в другом месте, я создал чат .
AMC
1

Я не был удовлетворен ни одним из ответов, представленных здесь, поскольку активация среды занимает несколько секунд на моей платформе (по любой причине)

Я изменил мою переменную пути так, чтобы среда, которую я хочу по умолчанию, имела приоритет над фактической по умолчанию.

В моем случае я использовал следующие команды, чтобы выполнить это для среды "py35":

setx PATH "%userprofile%\Anaconda3\envs\py35\;%PATH%"
setx PATH "%userprofile%\Anaconda3\envs\py35\Scripts;%PATH%"

чтобы узнать, где хранится ваша среда, активируйте ее и войдите where python. Я еще не уверен, есть ли у этого подхода какие-либо недостатки. Так как он также меняет путь по умолчанию для исполняемого файла conda. Если это так, пожалуйста, прокомментируйте.

Доминик Андреас
источник
1

Я получил это при установке библиотеки с помощью Anaconda. Моя версия перешла с Python 3. * до 2.7, и многие мои вещи перестали работать. Лучшее решение, которое я нашел, было сначала увидеть самую последнюю доступную версию:

conda search python

Затем обновите до нужной версии:

conda install python=3.*.*

Источник: http://chris35wills.github.io/conda_python_version/

Другие полезные команды:

conda info
python --version
Brad123
источник
Моя версия перешла с Python 3. * до 2.7, и многие мои вещи перестали работать. Если я что-то упустил, похоже, это не связано с вопросом и тем, что описано в ОП.
AMC
0

Создайте ярлык приглашения anaconda на рабочем столе или панели задач, а затем в свойствах этого ярлыка убедитесь, что вы изменили последний путь в «Target:» на путь вашей среды:

C: \ Users \ BenBouali \ Anaconda3 \ ИЗМЕНИТСЯ В C: \ Users \ BenBouali \ Anaconda3 \ envs \ensorflow-gpu

предварительный просмотр

и таким образом вы можете использовать этот ярлык, чтобы открыть определенную среду при щелчке по нему, вы можете добавить его и к своему пути, и теперь вы сможете запускать его из окна запуска Windows, просто введя имя ярлыка.

Kream
источник
0

В Windows создайте командный файл со следующей строкой:

start cmd /k "C:\Anaconda3\Scripts\activate.bat C:\Anaconda3 & activate env"

Первый путь в кавычках - это путь к файлу activ.bat в установке Anaconda. Путь в вашей системе может быть другим. Конечно, имя после команды активации должно быть вашим желаемым именем среды.

Затем запустите командный файл, когда вам нужно открыть приглашение Anaconda.

Fijoy Вадаккумпадан
источник
0

Загрузите вашу «базовую» среду - как OP py34- когда вы загружаете свой терминал / оболочку.

Если вы используете Bash, поставьте строку:

conda activate py34

в вашем .bash_profile(или .bashrc):

$ echo 'conda activate py34' >> ~/.bash_profile

Каждый раз, когда вы запускаете новый терминал, среда conda py34будет загружена.

Brandt
источник