lệnh linux được tìm thấy nhưng không tìm thấy khi sử dụng sudo


11

Tôi đang cố gắng chạy cài đặt python3 như thế này:

pip3 install django

Tôi nhận được lỗi:

QuyềnError: [Errno 13] Quyền bị từ chối: '/usr/local/lib/python3.6/site-packages/pytz'

Sau đó tôi thử:

sudo pip3 install django

Tôi nhận được lỗi:

sudo: pip3: không tìm thấy lệnh

Đây là những gì $ PATH của tôi trông như thế nào:

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

Làm thế nào tôi có thể có quyền truy cập sudo vào pip3?

Câu trả lời:


9

Sudo không sử dụng giống PATHnhư người dùng hiện tại của bạn vì lý do bảo mật. Trong /etc/sudoersđó có một tùy chọn secure_pathchỉ định đường dẫn được sử dụng khi chạy các lệnh với sudo. Của tôi trông như thế này:

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

Từ trang 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.

Các pip3lệnh có lẽ không phải trong đường dẫn xác định bởi các sudoerstập tin. Bạn có thể thêm đường dẫn đến secure_pathhoặc cung cấp đường dẫn đầy đủ cho pip3lệnh như thế này:

sudo /path/to/pip3 install django

1

Có thể sudo không bảo toàn biến $ PATH của bạn khi sử dụng. Hãy thử sử dụng đường dẫn đầy đủ đến nhị phân pip3 trong lệnh, ví dụ : sudo /path/to/pip3 install django. Nếu bạn không chắc chắn về đường dẫn đầy đủ, hãy làm which pip3.


mà đầu ra pip3: / usr / local / bin / pip3. Biến $ PATH cũng có vẻ tốt: /usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/ec2-user/.local/bin:/home/ec2- người dùng / bin
petey

không sudo echo $PATHsản xuất gì khác nhau? Bạn đã thử lệnh với đường dẫn đầy đủ đến pip3 chưa? Bất kỳ sự khác biệt trong kết quả?
Safado

sudo kết quả đầu ra như nhau: /usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/ec2-user/.local/bin:/home/ec2-user/bin
petey


0

Tôi đã phát hành cài đặt django theo cách này:

pip3 install --user django

Điều này đã khắc phục vấn đề.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.