22

編集:rootで機能し、sudoが問題です。以下をお読みください。

自分のライブラリを含むディレクトリがあります。たとえば、Pythonライブラリはにあり/home/name/lib/pyます。
次の行を追加して、このディレクトリをすべてのユーザー(rootを含む)のPythonのPATH/etc/bash.bashrcに追加しました。

export PYTHONPATH=$PYTHONPATH:/home/name/lib/py

すべてのユーザー(rootを含む)で機能します。ただし、sudoでは機能しません。sudoを使用する方法はあります/etc/bash.bashrcか?

編集:詳細情報:

私はPYTHONPATH次のようにsudoersファイルに追加しました:Defaults env_keep += "HOME PYTHONPATH"。それは動作しません。

env | grep PYTHON:
    PYTHONDONTWRITEBYTECODE=1
    PYTHONPATH=/home/name/lib/py

sudo env | grep PYTHON:
    PYTHONDONTWRITEBYTECODE=1

sudo echo $PYTHONPATH:
    /home/name/lib/py
4

6 に答える 6

21

私の場合の修正は、Defaults !env_resetsudoers から削除することでした。

しかし、私はDefaults env_keep += "PYTHONPATH"sudoersにとどまらなければなりませんでした。
実際に追加しましたDefaults env_reset(環境変数をリセットします)が、env_keep.

env_keepとは!env_reset矛盾しているように見えますが、それは単なる推測です。


したがって、プロセス全体:

  1. またはexport PYTHONPATH=/your/custom/pathに追加~/.bashrc/etc/bash.bashrc
  2. sudoers ファイルPYTHONPATHに追加Defaults env_keep += "ENV1 ENV2 ..."
  3. Defaults !env_reset存在する場合、sudoers ファイルから削除します
于 2011-11-02T01:08:11.870 に答える
2

別のヒント:

sudo echo $PYTHONPATH:
    /home/name/lib/py

動作しません。シェルはそれを次のように解釈します:

1)env変数から$ PYTHONPATHを展開します。例:/ usr / lib / python

2)「sudoecho / usr / lib/python」を実行します

于 2012-11-22T09:23:14.347 に答える
2

操作の代替PYTHONPATH:

于 2011-11-02T03:28:10.603 に答える
0

これはおそらく別の場所に投稿する必要があります。ただし、sudoはデフォルトでは環境ファイルを処理しません。それを呼び出したい場合は、-iフラグが役立ちます。ユーザーの初期ログインをシミュレートします。

変数を配置する場所も試してみる必要があるかもしれません。http://linux.die.net/man/8/sudo

于 2011-11-01T19:58:11.037 に答える