GNU/Linux >> Belajar Linux >  >> Linux

Virtualenv menggunakan python yang salah, meskipun yang pertama di $PATH

Masalah saya adalah saya baru saja pindah proyek saya dengan virtualenv ke lokasi lain, karena activate ini skrip memiliki salah VIRTUAL_ENV jalan.

$ cat path_to_your_env/bin/activate

... # some declarations

VIRTUAL_ENV="/path_to_your_env/bin/python"  # <-- THIS LINE
export VIRTUAL_ENV

... # some declarations

Untuk memperbaikinya, perbarui saja VIRTUAL_ENV di activate skrip.

Anda juga mungkin perlu memperbaiki baris pertama bin/pip Anda untuk menautkan ke jalur python asli.


Jika Anda tidak mendapatkan program yang which mengatakan Anda harus mendapatkan, Anda perlu melihat rantai lebih tinggi daripada pelaksana platform. Shell biasanya memiliki cara untuk perintah alias dan pada sebagian besar shell unxy Anda cukup memasukkan alias untuk melihat perintah mana yang telah dipetakan ulang. Maka itu hanya masalah membuka file konfigurasi untuk shell Anda dan menghapus aliasnya.

Terkadang orang alias python untuk mencoba memilah python mana yang harus mereka gunakan. Tapi biasanya ada cara lain yang lebih baik. Di mesin linux saya, misalnya, python3 ada di jalur tetapi merupakan symlink ke python asli yang saya gunakan.

[email protected] ~ $ which python3
/usr/bin/python3
[email protected] ~ $ ls -l /usr/bin/python3
lrwxrwxrwx 1 root root 9 Feb 17  2016 /usr/bin/python3 -> python3.4
[email protected] ~ $ 

Ini bagus karena program non-shell yang menjalankan python mendapatkan yang sama dengan yang saya lakukan dan lingkungan virtual bekerja secara alami.


Seperti yang disarankan tdelaney di komentar, saya menjalankan alias dan ternyata saya sebelumnya telah membuat alias python ke /usr/bin/python3.5 di .bashrc saya .

Saya menghapus alias itu dari .bashrc saya , jalankan unalias python , dan source ~/.bashrc dan masalahnya terpecahkan.


Di Cygwin, saya masih mengalami masalah bahkan setelah saya membuat symlink ke titik /usr/bin/python ke F:\Python27\python.exe . Di sini, setelah source env/Scripts/activate , which python masih /usr/bin/python .

Setelah sekian lama, saya menemukan solusinya. Alih-alih menggunakan virtualenv env , Anda harus menggunakan virtualenv -p F:\Python27\python.exe env meskipun Anda telah membuat symlink.


Linux
  1. Pertanyaan virtualenv python

  2. Linux, Mengapa saya tidak bisa menulis meskipun saya memiliki izin grup?

  3. Gradle menemukan JAVA_HOME yang salah meskipun disetel dengan benar

  1. Instal PIP tidak dapat menemukan ffi.h meskipun ia mengenali libffi

  2. dlsym mengembalikan NULL, meskipun simbolnya ada

  3. /bin/ls tidak ditemukan, meskipun ada!

  1. Menyiapkan lingkungan pengembangan python virtualenv di Debian Linux

  2. 20 Penggunaan Teratas Linux

  3. Mengapa Tidak Dapat Menemukan Read /run/user/1000/gvfs Meskipun Dijalankan Sebagai Root?