Bagaimana cara beralih kembali ke python2 setelah Anaconda menetapkan python3 sebagai default?


18

Baru-baru ini, saya menginstal Anaconda3-2.5.0-Linux-x86_64.sh pada 15,04 saya dan berakhir dengan ini!

:~$ python --version
Python 3.5.1 :: Anaconda 2.5.0 (64-bit)

:~$ python2 --version
Python 2.7.9

:~$ python3 --version
Python 3.5.1 :: Anaconda 2.5.0 (64-bit)

Pada saat-saat terakhir pemasangan, saya memasukkan sesuatu dengan yestergesa-gesa, dan saya kira itu harus melakukan sesuatu dengan ini. (Ok, salahku, aku seharusnya menangani itu dengan hati-hati, tapi aku butuh bantuan sekarang, bukan kritik).

Tangkapan layar

AFAIK ini pasti akan merusak program lain. Apa yang saya lakukan sekarang?


Apa yang saya pikir bisa berhasil.

Bisakah ini dilakukan dengan menggunakan alias?

alias python=python2

Tapi saya tidak yakin.


Iya. gunakanalias python=python2
Mostafa Ahangarha

AFAIK ini pasti akan merusak program lain. Apa yang membuat Anda berpikir begitu? Jika Anaconda menetapkan Python 3 sebagai default, itu mungkin karena suatu alasan.
fkraiem

Saya sudah merusak salah satu proyek saya yang ditulis untuk 2.x, dan mengonversi default ke 3.x tidak dianjurkan terutama karena banyak paket bekerja pada 2.x!
seram

Ini adalah saat Anda sangat senang bahwa Anda mengambil pendekatan profesional dan memiliki tiruan dari boot drive pra-instal Anda untuk mencegah hal ini menjadi pembuang waktu yang besar. Silakan lihat jawaban saya di bawah ini. Saya pikir metode instal Anda menyebabkan kesalahan. Jadi jika ini terjadi pada saya, saya akan kembali dan mencoba lagi. Total waktu akan kurang dari satu hari untuk mencari tahu apakah itu layak. Dalam kasus saya, seperti yang Anda lihat, saya berada di akhir verifikasi jadi sekarang dapat berkembang untuk melihat apakah ini sepadan dengan usaha di tempat pertama. Butuh waktu beberapa hari untuk memastikan itu tidak menyebabkan masalah, dan pekerjaan penelitian berada di jalurnya.
SDsolar

untuk menentukan versi Python, pastikan Anda tahu persis efek riak yang dapat terjadi di seluruh sistem Anda. Kecuali jika Anda hanya bermain, itu benar-benar akan memerlukan proses verifikasi lengkap jika Anda mengubah target dari hasil standar which pythonshebang. Hanya perlu sedikit waktu di depan untuk mencegah kemudian mengetahui bahwa Anda telah melukis diri Anda sendiri di sudut perlu menulis ulang beberapa utilitas Anda. Yang terbaik adalah membiarkan semuanya berjalan dengan default kecuali Anda memiliki banyak waktu.
SDsolar

Jawaban:


18

Saya pergi melalui instalasi di VM, dan berikut ini terjadi.

  1. Pemasang meminta lokasi pemasangan. Defaultnya adalah /home/myuser/anaconda3.
  2. Pada akhirnya Anda akan diminta

    Python 3.5.1 :: Continuum Analytics, Inc.
    creating default environment...
    installation finished.
    Do you wish the installer to prepend the Anaconda3 install location
    to PATH in your /home/myuser/.bashrc ? [yes|no]
    [no] >>> yes
    
    Prepending PATH=/home/myuser/anaconda3/bin to PATH in /home/myuser/.bashrc
    A backup will be made to: /home/myuser/.bashrc-anaconda3.bak
    

Untuk mengembalikan perilaku lama, buka direktori home Anda dan lakukan

mv .bashrc-anaconda3.bak .bashrc

kemudian mulai shell baru.

Seperti yang Anda sarankan, Anda bisa alias python=python2, tetapi saya menemukan itu agak aneh. saya akan

  1. Kembalikan yang asli .bashrc
  2. Buat (jika tidak ada) ~/bin
  3. Tautan ln -s ~/anaconda3/bin/python3 ~/bin/python3
  4. [Prepend $HOME/binto $PATH] (Seharusnya sudah diatur secara default oleh ~/.profile)
  5. Masuk kembali.

Dengan begitu, panggilan python3akan dimulai dari Anaconda.


Poin penting adalah, bahwa aslinya /usr/bin/pythonmasih ada, dan masih menunjuk ke python2.7. Konsekuensi memiliki python->python3di jalan Anda tergantung pada bagaimana script tertentu dipanggil.

Jika shebang #!/usr/bin/pythondigunakan, seperti itu mungkin ada di semua executable yang dikirimkan bersama Ubuntu, tidak ada yang akan berubah. Di sisi lain, untuk portabilitas yang lebih baik #!/usr/bin/env pythonkadang-kadang digunakan, yang sekarang akan menyebabkan python3.5dipanggil.


3
"4. Prepend $ HOME / bin ke $ PATH" .. sudah dilakukan secara default ~/.profile- hanya sebuah relogin diperlukan setelah membuat ~/bin.
muru

@uru Itu benar, terima kasih. Ditambahkan ke jawabannya.
Nephente

oke, itu berhasil, terima kasih! Hanya untuk memberitahukan hal ini, bahwa saya memiliki python 3.4.3 juga diinstal sebelumnya (dan pip dan pip3 keduanya terkait dengannya), sekarang saya memiliki 2,7, 3,4, 3,5. Sekarang saya akan menginstal ulang pip untuk mengarahkannya ke 3.5!
seram

Anaconda datang dengan manajer paketnya sendiri yang disebut conda. Ini juga mengelola lingkungan virtual. Saya menggunakannya untuk menginstal paket bukan pip.
Nephente



3

Jika ada orang yang ingin mengubah versi standar python mereka kembali ke 2.7 setelah mengacaukannya (dengan mengubah standarnya menjadi: anaconda atau python 3) dan berakhir dengan perangkat lunak yang tidak berfungsi, cukup ikuti tautan ini: Tautan dengan instruksi untuk mengubah default versi python.


Jika perubahan sistem salah, pastikan Anda dapat mengembalikannya. Pastikan Anda memiliki cadangan gambar sistem yang baik sehingga setiap perubahan besar dapat dibalik dengan cepat jika tidak sesuai rencana Anda. Berpikir profesional. Jika Anda menggunakan teknik amatir maka Anda tidak dapat mengharapkan hasil profesional.
SDsolar

1

Ini bekerja untuk saya tetapi untuk Miniconda, itu juga harus bekerja untuk Anaconda, tetapi tolong perbaiki saya jika saya salah.

Pertama, dapatkan variabel $ PATH Anda :

echo $PATH

Mungkin akan terlihat seperti ini (jalur miniconda sebelum yang lainnya):

/home/your_user/miniconda3/bin:$PATH

Salin path itu ke bagian bawah file ~ / .bashrc Anda , tetapi dengan Miniconda di bagian akhir daripada di awal path seperti:

export PATH="$PATH:/home/your_user/miniconda3/bin"

Sistem akan mencari program pada awal variabel $ PATH sebelum folder miniconda3 / bin.

Seharusnya mengembalikan versi untuk program sebelumnya yang Anda miliki seperti python.

Dimulai pada Conda 4.4, mereka mengubah kode yang ditambahkan ke ~ / .bashrc. Sekarang, untuk mencapai hal yang sama, edit ~ / .bashrc dan komentari baris di bawah seperti ini untuk mencegah lapisan dasar (lingkungan dasar) dari mengaktifkan di setiap terminal. Tidak perlu menyentuh bagian lain dari penambahan baru. Saya tidak yakin apa yang penting CONDA_CHANGEPS1=false, tetapi sejauh ini tidak mengalami masalah.

   # CONDA_CHANGEPS1=false conda activate base

Dan sementara Anda tidak akan melihat folder conda di jalan lagi, yang condaperintah tetap akan berjalan baik-baik saja, dan asli Anda python, python3dan pipenvperintah akan juga.


Jengkel karena saya pikir Anda benar. Ini bagus untuk dimiliki dalam database. Namun, dapatkah saya meminta Anda sedikit lebih spesifik tentang nomor versi perangkat lunak yang terlibat?
SDsolar

Terima kasih, dan saya benar-benar tidak berpikir bahwa versi program itu penting, ini harus selalu berhasil. Pada saat itu installer saya berada pada versi berikut: Miniconda3 4.3.14. Apakah itu membantu?
pedrodcb

0

Inilah jawaban saya, dan mungkin atau mungkin bukan jawaban spesifik yang sebenarnya untuk apa yang telah Anda lakukan pada sistem Anda sendiri.

Namun, saya berada dalam situasi yang sama dan memiliki keprihatinan yang sama.

Saya menggunakan Ubuntu 16.04 LTS dan Python 2.7.12, dan baru-baru ini menginstal Anaconda.

Jadi sekarang, ketika saya pergi ke baris perintah dan ketik pythonitu masih pergi ke instalasi Python2 saya.

Dikonfirmasi oleh sequesnce ini:

$which python
/usr/bin/python     <  Catch-all for max compatibility
$python
Python 2.7.12 . . etc

Jadi dalam kasus saya, anacondaTIDAK menyebabkan masalah dengan default Python2 shebangs saya.

Pada akhirnya, itulah pertanyaannya.

Ketika Anda bertanya pada sistem, which pythonAnda dapat mempercayai bahwa itu adalah string yang benar untuk digunakan di baris pertama dari program Python gaya command-line Anda.

Dalam situasi saya, semua file skrip baris perintah Python saya yang sama terus mengeksekusi dengan baik.

Saya cenderung menulis Python dalam mode 3-kompatibel. Seperti menggunakan tanda kurung di sekitar pernyataan cetak saya. Tapi saya secara aktif menolak perubahan besar pada sistem yang mungkin menyebabkan program Python 2 yang berjuang keras untuk menghadapi gangguan. Python 3 terdengar hebat tetapi tidak perlu untuk kebutuhan saya. Python 2 adalah bahasa yang menakjubkan.

Lingkungan komputasi saya tidak memungkinkan saya untuk kembali dan merekayasa ulang proses masa lalu yang telah disetel agar berfungsi dengan benar tanpa mengambil waktu yang lama karena saya harus kembali dan mencari tahu di mana saya menggunakannya di tempat pertama.


Intinya bagi saya: Setelah menginstal anacondauntuk penggunaan di masa depan, saya tidak memiliki masalah kecepatan atau masalah.


Itulah titik di mana saya sedang dalam proses ... Baru saja menyelesaikan sertifikasi ulang semua perangkat lunak masa lalu.


Langkah selanjutnya adalah benar-benar menggunakan beberapa hal keren yang dijanjikan dalam paket.


Jadi, saya harus curiga bahwa hanya menginstal lain anacondaharus ada lebih untuk situasi Anda.

Dari pengalaman saya itu sama sekali bukan masalah.


FYI, saya memiliki stasiun kerja Ilmiah lengkap, bekerja pada dinamika matahari. Juga tentang interaksi ephemerals dan satelit. Ini HARUS bekerja. JADI, aku bukan kuda poni satu trik dalam semua ini. Saya menginstal satu per satu, dan kemudian memverifikasi semuanya sebelum itu berfungsi. Lalu saya pindah ke yang berikutnya. SciPy, Matplotlab, dll. (Preferensi saya untuk merencanakan adalah gnuplot). Jadi harap dipahami bahwa saya mengirimkan jawaban ini sebagai titik data dari sistem kerja 24x7 langsung di lingkungan penelitian akademik. Ini bukan lingkungan pengujian - ini adalah produksi harian.
SDsolar

Juga, seperti yang saya singgung dalam komentar di atas, BERPIKIR PROFESIONAL. Sistem ini digunakan oleh para peneliti tingkat tinggi di seluruh dunia. -> Pastikan boot drive Anda memiliki kloning sebelum Anda melakukan peningkatan sistem utama. The ddperintah cepat dan mudah, dan koneksi SATA mudah. Tidak ada alasan untuk menghindari melindungi sistem Anda. Berhati-hatilah bahwa pada setiap langkah Anda dapat mengembalikan semua perubahan yang mungkin terjadi. Rive yang keras jauh lebih murah daripada waktu Anda. (kecuali Anda tidak berpikir itu benar). Hibah dana plus waktu krisis harus cukup insentif.
SDsolar
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.