พบคำสั่ง linux แต่ไม่พบเมื่อใช้ sudo


11

ฉันพยายามเรียกใช้การติดตั้ง python3 ดังนี้:

pip3 install django

ฉันได้รับข้อผิดพลาด:

PermissionError: [Errno 13] การอนุญาตถูกปฏิเสธ: '/usr/local/lib/python3.6/site-packages/pytz'

ฉันลองแล้ว:

sudo pip3 install django

ฉันได้รับข้อผิดพลาด:

sudo: pip3: ไม่พบคำสั่ง

นี่คือลักษณะของ $ PATH ของฉัน:

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

ฉันจะเข้าถึง sudo ไปยัง pip3 ได้อย่างไร

คำตอบ:


9

Sudo ไม่ได้ใช้งานเหมือนกับPATHผู้ใช้ปัจจุบันของคุณด้วยเหตุผลด้านความปลอดภัย ใน/etc/sudoersนั้นมีตัวเลือกsecure_pathที่ระบุเส้นทางที่ใช้เมื่อเรียกใช้คำสั่งด้วย sudo ฉันมีลักษณะเช่นนี้:

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

จาก manudo 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.

pip3คำสั่งอาจจะไม่ได้อยู่ในเส้นทางที่กำหนดโดยsudoersไฟล์ คุณสามารถเพิ่มพา ธ ไปยังsecure_pathหรือระบุพา ธ แบบเต็มไปยังpip3คำสั่งดังนี้:

sudo /path/to/pip3 install django

1

เป็นไปได้ว่า sudo ไม่เก็บตัวแปร $ PATH ไว้ขณะใช้งาน ลองใช้เส้นทางแบบเต็มไปไบนารี pip3 sudo /path/to/pip3 install djangoในคำสั่งตัวอย่างเช่น: which pip3หากคุณไม่แน่ใจของเส้นทางเต็มให้ทำ


เอาต์พุตใดของ pip3: / usr / local / bin / pip3 ตัวแปร $ PATH ดูดีเช่นกัน: /usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/ec2-user/.local/bin:/home/ec2- user / bin
petey

ไม่sudo echo $PATHแตกต่างกันผลิตอะไร? คุณลองคำสั่งด้วยพา ธ เต็มไปยัง pip3 หรือไม่? มีความแตกต่างในผลลัพธ์หรือไม่?
Safado

sudo ให้ผลลัพธ์เหมือนกัน: /usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/ec2-user/.local/bin:/home/ec2-user/bin
petey


0

ฉันออก django ติดตั้งด้วยวิธีนี้:

pip3 install --user django

วิธีนี้แก้ไขปัญหาได้

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.