別のヒント:
sudo echo $PYTHONPATH:
/home/name/lib/py
うまくいきません。シェルは次のように解釈します:
1) 環境変数から $PYTHONPATH を展開します。例:/usr/lib/python
2) 「sudo echo /usr/lib/python」を実行
私の場合の修正は、 Defaults !env_reset
を削除することでした sudoers より。
しかし、 Defaults env_keep += "PYTHONPATH"
を保持する必要がありました sudoers で。
実際に Defaults env_reset
を追加しました (環境変数をリセットします)が、 env_keep
のためにまだ機能します .
env_keep
のようです および !env_reset
互いに競合しますが、それは単なる推測です.
したがって、プロセス全体:
<オール>export PYTHONPATH=/your/custom/path
を追加 ~/.bashrc
まで または /etc/bash.bashrc
PYTHONPATH
を追加 Defaults env_keep += "ENV1 ENV2 ..."
まで sudoers ファイル内Defaults !env_reset
を削除 存在する場合は sudoers ファイルから
PYTHONPATH
を操作する代わりの方法 :
- virtualenv
- distutils
PATH
についても同様です。 環境保護フラグ -E
を渡しているにもかかわらず、スーパー ユーザー環境にも持ち込まれません。 .
他の変更を加えずに、この sudo コマンドを使用しています:
sudo -HE env PATH=$PATH PYTHONPATH=$PYTHONPATH ./bin/myscript
これは (私にとって) 有効な代替アプローチであるため、ここで共有したいと思います。