Pythonスクリプトに環境変数を渡さないでください。

Pythonスクリプトに環境変数を渡さないでください。

小さなPythonスクリプトがあります

#!/usr/bin/env python3

import some_python3_module

def main():
    # do stuff

if __name__ == '__main__':
    main()

ROSは変数をバージョン2.7に関連するいくつかの場所に設定するため、Python3を使用してこのスクリプトを実行することはできません。これは、Python 3がPYTHONPATHそのディレクトリにモジュールを見つけることができないことを意味します。dist-packages外部環境を変更せずにこの動作をオーバーライドしたいと思います。つまり、私は願っていますunset PYTHONPATHが、このスクリプト内でのみ、そして好ましくはその中でshebangが動作し続けることができます。可能ですか?

これがsuperuser.comに適しているかどうかはわかりません。

答え1

あなたのニーズに合ったコマンドラインオプションがあります:

#!/usr/bin/env python3 -E

- 金利

PYTHONPATHやPYTHONHOMEなど、設定できるPYTHON *環境変数を無視します。

答え2

この質問は少し古くなっていますが、この問題に対する具体的な解決策を探しています。これが/usr/bin/envを使用する実際の目的であることがわかりました。

#!/usr/bin/env -u PYTHONPATH python3

これにより、目的の効果を得ることができます。未設定、そしてpython3を実行してください。

man 1環境で:

ENV(1)                                    User Commands                                    ENV(1)

NAME
       env - run a program in a modified environment
.
.<snip>
.
       -u, --unset=NAME
              remove variable from the environment

関連情報