Як змінити середовище Anaconda python


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, маючи на увазі, що я не хочу перевстановлювати все з нуля.


7
Ви розглядали можливість використання source activate py34у своєму .bashrc?
віт

1
Дякую за вашу відповідь. Я не пробував цього, тому що я думаю, що неможливо викликати активацію джерела з bash-скрипту, оскільки команду-джерело потрібно запускати в одній оболонці, а не в нижній частині. Я намагався ввести два рядки вище в скрипт bash, і це, можна сказати, не працює.
користувач2734434

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його, це вплине на середовище оболонки.
асмюрер

Відповіді:


86

Якщо ви просто хочете перейти на інше середовище, використовуйте

source activate environment-name

(ви можете створити за environment-nameдопомогою `conda create)


Зазвичай найкраще просто створювати нові середовища. Однак якщо ви дійсно хочете змінити версію Python у середовищі за замовчуванням , ви можете зробити наступне:

По-перше, переконайтеся, що у вас є остання версія конди, запустівши

conda update conda

Потім бігайте

conda install python=3.5

Це спробує оновити всі ваші пакети у вашому кореневому середовищі до версій Python 3. Якщо це неможливо (наприклад, оскільки деякий пакет не побудований для Python 3.5), він видасть вам повідомлення про помилку із зазначенням того, який пакет (и) викликав проблему.

Якщо ви встановили пакети з pip, вам доведеться їх перевстановити.


1
@flutefreak Він фактично працюватиме в Windows зараз (запустіть conda update condaспочатку, щоб переконатися, що у вас є остання версія). Я оновлю відповідь.
асмеурер

126
Ця відповідь, схоже, не підключається до питання, що стосується зміни середовища за замовчуванням.
Боб

16
@asmeurer Але це не те, що просили. Він не хоче оновлювати пакети в жодному середовищі. Він хоче зробити py34 середовищем за замовчуванням, бути активним без втручання, тому py34 активний, перш ніж він надсилає команду "активація джерела".
Боб

20
Я маю згоду з @Bob тут. Пакети в кореневому середовищі будуть оновлені до 3,5, і це, можливо, вирішило специфічну проблему початкового плаката. Але коли ви відкриєте підказку, ви все одно будете знаходитися в кореневому середовищі, тому ви не вказали іншого середовища за замовчуванням. Оскільки кожен, хто хоче цього досягти, і гуглз, це закінчується цим питанням, було б краще, якби відповіли і на початкові запитання. Можливо, змінити env за замовчуванням на щось інше, ніж root, неможливо?
arjan

4
Це не працює для мене. Моїм замовчуванням є python 3.4, якщо прапор python=3.5не оновив python з 3,4 до 3,5 ... Будь-які пропозиції?
WillZ

56

Огляд
Деякі люди мають безліч середовищ Anaconda з різними версіями python з міркувань сумісності. У цьому випадку у вас повинен бути сценарій, який встановлює ваше середовище за замовчуванням. За допомогою цього методу ви можете зберегти версії python, які ви використовуєте у своїх середовищах.

Нижче наведено припущення, що назва_назви_середовище - це назва вашого середовища

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 - тому дотримувався рекомендованих дій для встановлення двох окремих середовищ, але мені було дуже дратувати, щоб пам’ятати, щоб активувати середовище у кожному новому вікні терміналу. Це працює!
Livvy Jeffs

Це призводить до зламаної труби та замороженого командного рядка, коли я роблю це під Windows 10.
aaronsnoswell

Хтось із Windows 10 має більше удачі з цим?
Вассадамо

3
Це має бути прийнятою відповіддю (принаймні для Uninda на основі Conda)!
Саймон Ван

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"

і це все є для цього.


3
І в чому питання?
Дітер Мемкен

Я спробував це рішення, але воно все ще показує anaconda2 на моєму шляху, якісь ідеї?
Вільям Росс

10
Це не встановлює середовище за замовчуванням. Здається, він обходить конду і підробляє його, думаючи, що "python3" є типовим. "conda info -e" все ще відображає "root" як поточне середовище. Я все ще шукаю спосіб сказати конді, який є типовим.
MrMas

8
Це не встановлює середовище за замовчуванням з точки зору conda. Здається, він обходить конду і підробляє його, думаючи, що "python3" є типовим. "conda info -e" все ще відображає "root" як поточне середовище. Щоб виправити це, потрібно також встановити CONDA_PREFIX та CONDA_DEFAULT_ENV. Вже тоді відповіді все-таки рубають; чому б просто не запустити "активувати джерело <нове середовище за замовчуванням>", оскільки це вже надається conda як "вбудований" спосіб для цього.
MrMas

Чи є .bashrcабо .bash_profileна Windows 10? Я знайшов його під cygwin, дотримуючись цього jattenberg.github.io/PDS-Fall-2013/assets/install/… . Але я не впевнений, що я повинен змінити, щоб отримати бажану функціональність ОП.
Wassadamo

14

Для Windows Anaconda поставляється з підказкою Anaconda, яка є ярликом до cmd і може використовуватися запускати команди conda без додавання анаконда у змінну 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) почати ... \ cmd.exe 2) запустити ... \ acitvate.bat з навколишнім середовищем 3) ... \ Мініконда3 \

Змініть третю частину на шлях середовища (скажімо, myenv), який ви хочете за замовчуванням, тобто заповніть цільову форму чимось на зразок%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. Цей ярлик ви можете зберегти в меню "Пуск" або закріпити на панелі завдань.

Однією з переваг цього методу є те, що ви можете створити декілька ярликів, кожна з яких має інше середовище як середовище за замовчуванням. Також можна встановити папку за замовчуванням, заповнивши Пуск у формі вікна Властивості

Сподіваюся, це допомагає

PS: Не потрібно знаходити підказку Anaconda, і це можна зробити, змінивши ціль будь-якого ярлика. Але вам потрібно буде знати шлях до cmd.exe та activate.bat


2
Це має бути головна відповідь
Джеймс Маккормак

Я використовую цей метод, але моя перша частина трохи інша: C:\Windows\System32\cmd.exe /c start ""Не впевнений, як я дійшов до цього рішення, але ось повідомлення, яке я зробив щодо синтаксису
xtian

8

Зміна постійної

conda install python={version}

Тимчасово змінити

Перегляньте своє середовище

запустіть conda info --envsу вікні свого терміналу або підказку Анконда

Якщо не відображається середовище, яке ви хочете встановити

запускайте conda create -n py36 python=3.6 anacondaдля зміни python 3.6 зміну версії, як вам зручніше

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

запустити activate envnmeenvnme, ви можете знайти цю команду conda info --envsяк приклад, коли ви запустите conda info --envsїї show

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
Я думаю, що ОП хоче рішення, яке змінює базове середовище на 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 полягає в тому, щоб зробити різні середовища інкапсульованими, отже, чому ви повинні джерело активувати їх і чому ви не можете просто тихо перемикати базовий пакет за власним бажанням, оскільки це може призвести до багатьох проблем виробничих систем.


Що робити, якщо моє базове середовище порушено, і я хочу замінити його на таке, яке працює?
ендоліт

@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. Я ще не впевнений, чи є у цього підходу якісь недоліки. Оскільки він також змінює шлях за замовчуванням виконуваного конда. Якщо це так, будь ласка, прокоментуйте.


1

Це я отримав під час встановлення бібліотеки за допомогою анаконди. Моя версія перейшла від Python 3. * до 2.7 і багато моїх матеріалів перестали працювати. Найкраще рішення, яке я знайшов, - спершу побачити останню доступну версію:

conda search python

Потім оновіть потрібну версію:

conda install python=3.*.*

Джерело: http://chris35wills.github.io/conda_python_version/

Інші корисні команди:

conda info
python --version

Моя версія перейшла від Python 3. * до 2.7 і багато моїх матеріалів перестали працювати. Якщо я чогось не пропускаю, це, здається, не пов'язане з питанням та тим, що описано в ОП.
AMC

0

Створіть ярлик підказок anaconda на робочому столі або панелі завдань, а потім у властивостях цього ярлика переконайтесь, що ви змінюєте останній шлях у "Target:" на шлях середовища ur:

C: \ Користувачі \ BenBouali \ Anaconda3 \ WILL CHENGE INTO C: \ Users \ BenBouali \ Anaconda3 \ envs \ tensorflow-gpu

попередній перегляд

і таким чином ви можете використовувати цей ярлик для відкриття певного середовища при натисканні на нього, ви можете додати його до ур-шляху і тепер ви зможете запустити його з вікна запуску Windows, просто ввівши ім'я ярлика.


0

У Windows створіть пакетний файл із наступним рядком:

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

Перший шлях, що міститься в лапках, - це шлях до файла activate.bat в установці Anaconda. Шлях у вашій системі може бути різним. Ім'я, що слідує за командою активації, звичайно, має бути бажаним іменем середовища.

Потім запустіть пакетний файл, коли вам потрібно відкрити підказку Anaconda.


0

Завантажте своє "базове" середовище - як ОП py34- коли завантажуєте свій термінал / оболонку.

Якщо ви використовуєте Bash, поставте рядок:

conda activate py34

у вашому .bash_profile(або .bashrc):

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

Кожен раз, коли ви запускаєте новий термінал, конда py34буде завантажуватися.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.