Cara mengubah lingkungan python Anaconda default

170

Saya telah menginstal Anaconda dan menciptakan dua lingkungan tambahan: py3k (yang menampung Python 3.3) dan py34 (yang menampung Python 3.4). Selain itu, saya memiliki lingkungan default bernama 'root' yang dibuat oleh installer Anaconda secara default dan yang memegang Python 2.7. Yang terakhir ini adalah default, setiap kali saya meluncurkan 'ipython' dari terminal itu memberi saya versi 2.7. Agar dapat bekerja dengan Python 3.4, saya perlu mengeluarkan perintah (di shell)

source activate py34
ipython

yang mengubah lingkungan default ke Python 3.4. Ini berfungsi dengan baik, tapi itu menjengkelkan karena sebagian besar waktu saya bekerja pada Python 3.4, bukan Python 2.7 (yang saya pegang untuk tujuan pengajaran, ini cerita yang agak panjang). Lagi pula, saya ingin tahu cara mengubah lingkungan default ke Python 3.4, mengingat bahwa saya tidak ingin menginstal ulang semuanya dari awal.

pengguna2734434
sumber
7
Sudahkah Anda mempertimbangkan untuk menggunakan source activate py34di .bashrc?
sel
1
Terima kasih atas jawaban anda. Saya belum mencobanya karena saya pikir tidak mungkin untuk memanggil sumber mengaktifkan dari skrip bash, karena perintah sumber perlu dijalankan di shell yang sama, bukan di subkulit. Saya sudah mencoba meletakkan dua baris di atas ke dalam skrip bash, dan bisa saya katakan tidak bekerja.
user2734434
4
Saya punya CONDA_ROOT="/Users/bla/miniconda"dan source ${CONDA_ROOT}/bin/activate ${CONDA_ROOT}/envs/empty &> /dev/nulldi saya .bashrcdan tampaknya berfungsi dengan baik.
sel
1
Saya pikir .bashrctidak dijalankan sebagai skrip, tetapi bersumber dari shell baru, oleh karena itu Anda tidak dapat memeriksanya dengan menjalankan skrip bash.
sel
3
@ user2734434 file bashrc bersumber pada awal sesi, jadi jika Anda memasukkannya source activate, itu akan mempengaruhi lingkungan shell.
penanggung jawab

Jawaban:

86

Jika Anda hanya ingin mengubah ke lingkungan lain, gunakan

source activate environment-name

(Anda dapat membuat environment-namedengan `conda create)


Biasanya yang terbaik adalah hanya menciptakan lingkungan baru. Namun, jika Anda benar-benar ingin mengubah versi Python di lingkungan default , Anda dapat melakukannya sebagai berikut:

Pertama, pastikan Anda memiliki versi terbaru dari conda dengan menjalankan

conda update conda

Lalu lari

conda install python=3.5

Ini akan berusaha memperbarui semua paket Anda di lingkungan root Anda ke versi Python 3. Jika tidak mungkin (misalnya, karena beberapa paket tidak dibangun untuk Python 3.5), itu akan memberi Anda pesan kesalahan yang menunjukkan paket mana yang menyebabkan masalah.

Jika Anda menginstal paket dengan pip, Anda harus menginstalnya kembali.

penilai
sumber
1
@ flutefreak Ini sebenarnya akan berfungsi pada Windows sekarang (jalankan conda update condadulu untuk memastikan Anda memiliki versi terbaru). Saya akan memperbarui jawabannya.
penanggung jawab
126
Jawaban ini tampaknya tidak terhubung ke pertanyaan, yaitu tentang mengubah lingkungan default.
Bob
16
@asmeurer Tapi bukan itu yang ditanyakan. Dia tidak ingin memperbarui paket dalam env apa pun. Ia ingin menjadikan py34 lingkungan default, menjadi aktif tanpa intervensi, jadi py34 aktif sebelum ia mengirim perintah "source activ".
Bob
20
Saya harus setuju dengan @ Bob di sini. Paket-paket di lingkungan root akan diperbarui ke 3.5, dan ini mungkin telah memecahkan masalah spesifik poster asli. Tetapi ketika Anda membuka prompt Anda masih akan berada di lingkungan root, jadi Anda belum menentukan lingkungan default lain. Karena semua orang yang ingin mencapai ini dan Google akhirnya menemukan pertanyaan ini, akan lebih baik jika pertanyaan asli juga dijawab. Mungkin mengubah env default ke sesuatu selain root tidak mungkin?
arjan
4
Ini tidak berhasil untuk saya. Default saya adalah python 3.4, menggunakan flag python=3.5tidak meng-upgrade python dari 3.4 ke 3.5 ... Ada saran?
WillZ
56

Gambaran Umum
Beberapa orang memiliki beberapa lingkungan Anaconda dengan berbagai versi python untuk alasan kompatibilitas. Dalam hal ini, Anda harus memiliki skrip yang menetapkan lingkungan default Anda. Dengan metode ini, Anda bisa mempertahankan versi python yang Anda gunakan di lingkungan Anda.

Berikut ini menganggap environment_name adalah nama lingkungan Anda

Mac / Linux:
Edit profil bash Anda sehingga baris terakhir adalah source activate environment_name. Di Mac OSX ini ~ / .bash_profile, di lingkungan lain ini mungkin ~ / .bashrc

Contoh:
Begini cara saya melakukannya di Mac OSX

  1. Buka Terminal dan ketik:

    nano ~/.bash_profile

  2. Pergi ke akhir file dan ketik yang berikut ini, di mana "p3.5" adalah lingkungan saya:

    source activate p3.5

  3. Keluar dari File. Mulai jendela terminal baru.

  4. Ketik yang berikut untuk melihat lingkungan apa yang aktif

    conda info -e

Hasilnya menunjukkan bahwa saya menggunakan lingkungan p3.5 saya secara default.

Untuk Windows:
Buat file perintah (.cmd) dengan activate environment_namedan ikuti instruksi ini untuk menjalankannya setiap kali Anda membuka prompt perintah

  1. Buat perintah file batch, misalnya "my_conda.cmd", taruh di folder Data Aplikasi.
  2. Konfigurasikan untuk memulai secara otomatis setiap kali Anda membuka cmd. Pengaturan ini di Registry:
    kunci: HKCU \ SOFTWARE \ Microsoft \ Command
    Nilai prosesor :
    tipe AutoRun : REG_EXPAND_SZ
    data: "% AppData% \ my_conda.cmd"

dari jawaban ini: https://superuser.com/a/302553/143794

Tinjuan kemarahan
sumber
1
Terima kasih banyak. Saya menemukan bahwa dengan versi Mac saya, saya tidak dapat menyingkirkan Python 2 - jadi ikuti tindakan yang disarankan untuk mengatur dua lingkungan yang terpisah, tetapi sangat menjengkelkan harus mengingat untuk mengaktifkan lingkungan di setiap jendela terminal baru. Ini bekerja!
Livvy Jeffs
Ini mengarah ke pipa yang rusak dan prompt perintah beku ketika saya melakukan ini di bawah Windows 10.
aaronsnoswell
Adakah di Windows 10 yang lebih beruntung dengan ini?
Wassadamo
3
Ini harus menjadi jawaban yang diterima (setidaknya untuk Conda berbasis unix)!
Simon Van Machin
50

Di Linux ada cara yang lebih mudah untuk mengatur lingkungan default dengan memodifikasi ~/.bashrcatau ~/.bash_profile Pada akhirnya Anda akan menemukan sesuatu seperti

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

Ganti dengan

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

dan hanya itu yang ada di sana.

Jev
sumber
3
Dan apa pertanyaannya?
Dieter Meemken
Saya mencoba solusi ini, tetapi masih menunjukkan anaconda2 di jalan saya, ada ide?
William Ross
10
Ini tidak mengatur lingkungan default. Tampaknya mengelak dari conda dan berpura-pura berpikir bahwa "python3" adalah default. "conda info -e" masih menampilkan "root" sebagai lingkungan saat ini. Saya masih mencari cara untuk memberitahu conda yang merupakan default.
MrMas
8
Ini tidak mengatur lingkungan default dari perspektif conda. Tampaknya mengelak dari conda dan berpura-pura berpikir bahwa "python3" adalah default. "conda info -e" masih menampilkan "root" sebagai lingkungan saat ini. Untuk memperbaikinya, Anda juga perlu mengatur CONDA_PREFIX dan CONDA_DEFAULT_ENV. Meski begitu, jawabannya masih berupa hack; mengapa tidak jalankan saja 'sumber aktifkan <lingkungan default baru>' karena ini sudah disediakan dengan conda sebagai cara "bawaan" untuk mencapai ini.
MrMas
Apakah ada .bashrcatau .bash_profiledi Windows 10? Saya menemukan satu di bawah cygwin saat mengikuti jattenberg.github.io/PDS-Fall-2013/assets/install/… ini . Tapi saya tidak yakin itu yang harus saya ubah untuk mendapatkan fungsionalitas OP yang diinginkan.
Wassadamo
14

Untuk windows Anaconda hadir dengan Anaconda Prompt yang merupakan jalan pintas ke cmd dan dapat digunakan menjalankan perintah conda tanpa menambahkan anaconda dalam variabel PATH. Temukan lokasi itu, salin dan ganti nama salinannya (misalkan myenv_prompt). Klik kanan myenv_prompt dan pilih properti di menu konteks.

masukkan deskripsi gambar di sini

Bentuk Target dari jendela Properties seharusnya sudah diisi dengan teks, sesuatu seperti %windir%\system32\cmd.exe "/K" C:\Users\xxx\AppData\Local\Continuum\Miniconda3\Scripts\activate.bat C:\Users\xxx\AppData\Local\Continuum\Miniconda3\ Ada tiga bagian dari perintah ini 1) mulai ... \ cmd.exe 2) jalankan ... \ acitvate.bat dengan lingkungan 3) ... \ Miniconda3 \

Ubah bagian ke-3 ke path lingkungan (misalkan myenv) yang Anda inginkan sebagai default yaitu isi bentuk Target seperti%windir%\system32\cmd.exe "/K" C:\Users\xxx\AppData\Local\Continuum\Miniconda3\Scripts\activate.bat C:\Users\xxx\AppData\Local\Continuum\Miniconda3\envs\myenv

Sekarang myenv_prompt akan bertindak sebagai jalan pintas untuk memulai cmd dengan myenv sebagai lingkungan default untuk python. Pintasan ini dapat Anda simpan di menu mulai atau disematkan di bilah tugas.

Salah satu keuntungan dari metode ini adalah Anda dapat membuat beberapa pintasan yang masing-masing memiliki lingkungan berbeda sebagai lingkungan default. Anda juga dapat mengatur folder default dengan mengisi Mulai dalam bentuk jendela Properties

Semoga ini membantu

PS: Tidak perlu menemukan Anaconda Prompt dan dapat dilakukan dengan mengubah target pintasan apa pun. Tetapi Anda harus mengetahui jalur cmd.exe dan mengaktifkan.bat

Kushdesh
sumber
2
Ini harus menjadi jawaban teratas
James McCormac
Saya menggunakan metode ini, tetapi bagian pertama saya sedikit berbeda: C:\Windows\System32\cmd.exe /c start ""Tidak yakin bagaimana saya sampai pada solusi itu, tapi di sini saya membuat posting mengenai sintaksisnya
xtian
8

Ubah permanen

conda install python={version}

Ubah Sementara

Lihat lingkungan Anda

jalankan conda info --envsdi jendela terminal Anda atau Anconda Prompt

Jika tidak menunjukkan lingkungan yang ingin Anda instal

jalankan conda create -n py36 python=3.6 anacondauntuk versi perubahan python 3.6 seperti yang Anda inginkan

Mengaktifkan lingkungan (gunakan Anaconda prompt)

jalankan activate envnmeenvnme Anda dapat menemukan dengan perintah ini conda info --envssebagai contoh ketika Anda menjalankannya conda info --envsmenunjukkan

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

lalu lari activate py36

untuk memeriksa jalankan python --version

Di Windows, praktik yang baik untuk menonaktifkan satu lingkungan sebelum mengaktifkan yang lain. https://docs.conda.io/projects/conda/en/latest/user-guide/tasks/manage-environments.html?highlight=deactivate%20environment

Dulanga Heshan
sumber
3
Saya pikir OP menginginkan solusi yang mengubah lingkungan basis ke py36 sehingga mereka tidak harus berjalan activate py36setiap kali pada startup.
Wassadamo
6

Jawaban yang benar (per Des 2018) adalah ... Anda tidak bisa. Upgrade conda install python=3.6mungkin berfungsi, tetapi mungkin tidak jika Anda memiliki paket yang diperlukan, tetapi tidak dapat dihapus.

Anaconda menggunakan lingkungan default bernama basedan Anda tidak dapat membuat lingkungan baru (misalnya python 3.6) dengan nama yang sama. Ini disengaja. Jika Anda ingin basis Anaconda Anda menjadi python 3.6, cara yang tepat untuk melakukan ini adalah menginstal Anaconda untuk python 3.6. Sebagai manajer paket, tujuan Anaconda adalah untuk membuat lingkungan yang berbeda dienkapsulasi, karenanya mengapa Anda harus mengaktifkan sumber ke dalamnya dan mengapa Anda tidak bisa dengan diam-diam mengganti paket dasar sesuka hati karena ini dapat menyebabkan banyak masalah pada sistem produksi.

cgnorthcutt
sumber
Bagaimana jika lingkungan basis saya rusak dan saya ingin menggantinya dengan yang berfungsi?
endolith
@endolith Bagaimana jika lingkungan basis saya rusak dan saya ingin menggantinya dengan yang berfungsi? Pasang kembali Conda.
AMC
@ AMC Saya telah menginstal ulang berkali-kali. Saya ingin cara memulihkan kondisi yang baik tanpa harus mengulang semuanya
endolith
1
@ endolith Anda telah menginstal ulang beberapa kali untuk memperbaiki masalah yang sama persis? Bagaimana itu akhirnya rusak? Kita harus membahas ini di tempat lain, saya membuat ruang obrolan .
AMC
1

Saya tidak puas dengan jawaban yang disajikan di sini, karena mengaktifkan lingkungan membutuhkan beberapa detik di platform saya (untuk alasan apa pun)

Saya memodifikasi variabel jalur saya sehingga lingkungan yang saya inginkan sebagai standar memiliki prioritas di atas standar aktual.

Dalam kasus saya, saya menggunakan perintah berikut untuk melakukannya untuk lingkungan "py35":

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

untuk mencari tahu di mana lingkungan Anda disimpan, aktifkan dan masuk where python. Saya belum yakin apakah pendekatan ini memiliki kelemahan. Karena itu juga mengubah path default dari executable conda. Jika itu masalahnya, beri komentar.

andreas dominik
sumber
1

Saya mendapatkan ini ketika menginstal perpustakaan menggunakan anaconda. Versi saya beralih dari Python 3. * ke 2.7 dan banyak barang saya berhenti berfungsi. Solusi terbaik yang saya temukan adalah pertama kali melihat versi terbaru yang tersedia:

conda search python

Kemudian perbarui ke versi yang Anda inginkan:

conda install python=3.*.*

Sumber: http://chris35wills.github.io/conda_python_version/

Perintah bermanfaat lainnya:

conda info
python --version
Brad123
sumber
Versi saya beralih dari Python 3. * ke 2.7 dan banyak barang saya berhenti berfungsi. Kecuali jika saya melewatkan sesuatu, ini tampaknya tidak terkait dengan pertanyaan dan apa yang dijelaskan dalam OP.
AMC
0

Buat pintasan anaconda prompt ke desktop atau taskbar, dan kemudian di properti pintasan itu pastikan Anda memodifikasi jalur terakhir di "Target:" ke jalur lingkungan Anda:

C: \ Users \ BenBouali \ Anaconda3 \ AKAN MENGUBAH KE C: \ Users \ BenBouali \ Anaconda3 \ envs \ tensorflow-gpu

pratinjau

dan dengan cara ini kamu dapat menggunakan jalan pintas itu untuk membuka lingkungan tertentu ketika mengkliknya, kamu juga dapat menambahkannya ke jalurmu dan sekarang kamu akan dapat menjalankannya dari kotak run windows dengan hanya mengetikkan nama jalan pintas.

Kream
sumber
0

Di Windows, buat file batch dengan baris berikut di dalamnya:

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

Path pertama yang terdapat dalam tanda kutip adalah path ke file activ.bat dalam instalasi Anaconda. Jalur di sistem Anda mungkin berbeda. Nama yang mengikuti perintah aktivasi tentu saja harus nama lingkungan yang Anda inginkan.

Kemudian jalankan file batch ketika Anda perlu membuka prompt Anaconda.

Fijoy Vadakkumpadan
sumber
0

Memuat Anda "dasar" lingkungan - sebagai OP py34- ketika Anda memuat terminal Anda / shell.

Jika Anda menggunakan Bash, letakkan baris:

conda activate py34

di .bash_profile(atau .bashrc) Anda:

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

Setiap kali Anda menjalankan terminal baru, lingkungan conda py34akan dimuat.

Brandt
sumber