コマンドラインでsudoを使用してPythonスクリプトを実行することはできません。

コマンドラインでsudoを使用してPythonスクリプトを実行することはできません。

Centos 7仮想マシンがあり、Pythonスクリプトで特定のシェルコマンドを実行するにはsudo権限が必要です。#!/usr/bin/env python3.7私のスクリプトの上に1つありますが、実行するとエラーがsudo ./script.py発生します。/usr/bin/env: python3.7: No such file or directory私のコードをsudoでどのように実行しますか?明確にするために簡単に入力すると実行されますが、./script.pyスクリプトpermission deniedが3つの特定のコマンドを実行しようとすると1つを取得するのでsudoが必要です。

echo $PATH結果:

/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin:/home/centos/.local/bin:/home/centos/bin:/home/centos/.local/bin:home/centos/bin

sudo echo $PATH上記と同じ結果を提供します。

type python3.7私にしてください: python3.7 is /usr/local/bin/python3.7

ベストアンサー1

問題が多い

#!/usr/bin/env python3.7

1つ目は、python3.7スクリプトを実行するユーザーのパスにある必要があることです。明らかに、これはrootユーザーには当てはまりません。

2つ目は、python3.7PATHで最初のものを実行することです。バージョン3.7を明示的に要求すると、これは大きな問題ではないかもしれませんが、#!/usr/bin/env python必須の2ではなく3を実行する-sにたくさん会いました。

そのため、使用はお勧めできません#!/usr/bin/env

問題には3つの解決策があります。

  • ルートのPATHに入れてください/usr/local/bin/(推奨されていませんlocal。デフォルトではPATHにないためです)。
  • #!/usr/local/bin/python3.7スクリプトで使用してください。 Python以外のシステムで使用している場合は壊れる可能性があります。/usr/bin
  • pythonのPythonのデフォルトインストールを使用してください。アワビの代わりに/usr/binそれを使用することをお勧めします。#!/usr/bin/python3

おすすめ記事