GNU/Linux >> Linux の 問題 >  >> Linux

systemd 経由で Python スクリプトを実行すると、モジュールのロードに失敗する

このプロパティを [Service] に追加します systemd を確認するセクション 指定されたユーザーとして実行します。

User=pi

AndyD のソリューションを参照してください。


最も可能性の高い説明は、スクリプトが systemd によって実行されているときに設定されていないいくつかの環境変数が設定されていることです (たとえば、PYTHONPATH の拡張子など)。

Environment パラメーター ([0] を参照) を使用してみることができるので、PYTHONPATH (およびこれに影響を与える可能性のあるその他のもの) をコンソール セッションにあるものに設定してください。

[0] http://0pointer.de/public/systemd-man/systemd.exec.html#Environment=


systemd ルートとして実行されます。 pip 経由でインストールされたモジュール システム用ではなくユーザー用にインストールされるため、root 権限なしでモジュールをインストールすると、root がモジュールにアクセスできなくなります。

これを解決するために sudo -H pip install zmq を実行しました および sudo -H pip3 install zmq root 用の Python 2.7 と Python 3+ の両方のパッケージをインストールします。これにより systemd が許可されました Python スクリプトを実行しようとすると、モジュールにアクセスできます。


Linux
  1. Pythonインストールエラー–申し訳ありません:UnicodeError:サポートされていないエスケープはunicodedataモジュールをロードできません[解決済み]

  2. PHP から Python スクリプトを実行する

  3. root として notify-send を実行する

  1. &を使用してバックグラウンドで実行すると、Python スクリプトの Nohup が機能しない

  2. コマンドラインからhttpdが実行されているかどうかを確認する方法は?

  3. シェル スクリプトの実行時に root としてログインするようにユーザーに要求する

  1. bashスクリプトが同時に実行されないようにする

  2. ModuleNotFoundError:「IPython」という名前のモジュールがありません[修正]

  3. Systemd postgresql 起動スクリプト