perintah linux ditemukan tetapi tidak ditemukan ketika menggunakan sudo


11

Saya mencoba menjalankan instalasi python3 seperti ini:

pip3 install django

Saya mendapatkan kesalahan:

PermissionError: [Errno 13] Izin ditolak: '/usr/local/lib/python3.6/site-packages/pytz'

Saya kemudian mencoba:

sudo pip3 install django

Saya mendapatkan kesalahan:

sudo: pip3: perintah tidak ditemukan

Berikut ini bentuk $ PATH saya:

/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/ec2-user/.local/bin:/home/ec2-user/bin

Bagaimana saya bisa mendapatkan akses sudo ke pip3?

Jawaban:


9

Sudo tidak menggunakan yang sama PATHdengan pengguna Anda saat ini untuk alasan keamanan. Di /etc/sudoerssana ada opsi secure_pathyang menentukan jalur yang digunakan saat menjalankan perintah dengan sudo. Milik saya terlihat seperti ini:

Defaults        secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin"

Dari halaman sudo:

 secure_path   Path used for every command run from sudo.  If you don't trust the people running sudo to have a sane PATH environment
               variable you may want to use this.  Another use is if you want to have the “root path” be separate from the “user path”.
               Users in the group specified by the exempt_group option are not affected by secure_path.  This option is not set by
               default.

The pip3perintah mungkin tidak di jalur didefinisikan oleh sudoersberkas. Anda bisa menambahkan path ke secure_pathatau menyediakan path lengkap ke pip3perintah seperti ini:

sudo /path/to/pip3 install django

1

Mungkin saja sudo tidak melindungi variabel $ PATH Anda saat digunakan. Coba gunakan path lengkap ke biner pip3 dalam perintah, misalnya: sudo /path/to/pip3 install django. Jika Anda tidak yakin dengan path lengkap, lakukan which pip3.


yang keluaran pip3: / usr / local / bin / pip3. Variabel $ PATH juga terlihat bagus: /usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/ec2-user/.local/bin:/home/ec2- user / bin
petey

apakah sudo echo $PATHmenghasilkan sesuatu yang berbeda? Apakah Anda mencoba perintah dengan path lengkap ke pip3? Adakah perbedaan hasil?
Safado

sudo menampilkan hal yang sama: /usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/ec2-user/.local/bin:/home/ec2-user/bin
petey


0

Saya mengeluarkan django install dengan cara ini:

pip3 install --user django

Ini memperbaiki masalah.

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.