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

pip3へのsudoアクセスを取得するにはどうすればよいですか?

回答:


9

PATHセキュリティ上の理由から、sudoは現在のユーザーと同じものを使用していません。では/etc/sudoersオプションがありますsecure_pathのsudoでコマンドを実行するときに使用するパスを指定します。私のものは次のようになります。

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

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-ユーザー/ビン
ピーター

sudo echo $PATH何か違うものを生み出しますか?あなたはpip3へのフルパスでコマンドを試しましたか?結果に違いはありますか?
サファド

sudoは同じものを出力します。/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/ec2-user/.local/bin:/home/ec2-user/bin
ピーティー


0

この方法でdjangoインストールを発行しました:

pip3 install --user django

これにより問題が修正されました。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.