小さな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