GNU/Linux >> Belajar Linux >  >> Linux

PYTHONPATH tidak berfungsi untuk sudo di GNU/Linux (berfungsi untuk root)

Kiat lain:

sudo echo $PYTHONPATH:
    /home/name/lib/py

Itu tidak akan berhasil. Shell akan mengartikannya seperti ini:

1) perluas $PYTHONPATH dari variabel env misalnya:/usr/lib/python

2) jalankan "sudo echo /usr/lib/python"


Perbaikan dalam kasus saya adalah menghapus Defaults !env_reset dari sudoer.

Tapi, saya harus menyimpan Defaults env_keep += "PYTHONPATH" di sudoers.
Saya sebenarnya telah menambahkan Defaults env_reset (yang mengatur ulang variabel lingkungan), tetapi masih berfungsi karena env_keep .

Sepertinya env_keep dan !env_reset konflik satu sama lain, tapi itu hanya tebakan.

Jadi, seluruh prosesnya:

  1. tambahkan export PYTHONPATH=/your/custom/path ke ~/.bashrc atau /etc/bash.bashrc
  2. tambahkan PYTHONPATH ke Defaults env_keep += "ENV1 ENV2 ..." dalam file sudoers
  3. hapus Defaults !env_reset dari file sudoers jika ada

Alternatif untuk memanipulasi PYTHONPATH :

  • virtualenv
  • distutils

Hal yang sama berlaku untuk PATH variabel, itu juga tidak dibawa ke lingkungan pengguna super, meskipun Anda meneruskan bendera pelestarian lingkungan -E .

Saya menggunakan perintah sudo ini sekarang tanpa modifikasi lain:

sudo -HE env PATH=$PATH PYTHONPATH=$PYTHONPATH ./bin/myscript

Karena ini adalah pendekatan alternatif yang berhasil (untuk saya), saya pikir saya akan membagikannya di sini.


Linux
  1. Linux – Mengapa Setuid Tidak Bekerja??

  2. Linux – Headphone Tidak Berfungsi Linux Mint 18?

  3. 11 Perangkat Lunak CAD Terbaik untuk Linux

  1. Mengonfigurasi Sudo untuk Mengaktifkan Perintah untuk Pengguna Non-Root di Linux

  2. fflush() tidak berfungsi di Linux

  3. Instalasi/pembaruan komposer tidak berfungsi

  1. Cara Mengatur Hak Istimewa Sudo untuk Pengguna di Linux

  2. linux limit.conf tidak berfungsi?

  3. Perintah Linux 'akan' tidak berfungsi