Bash
避免將環境變數傳遞給 python 腳本
我有一個小的 python 腳本
#!/usr/bin/env python3 import some_python3_module def main(): # do stuff if __name__ == '__main__': main()
並且無法使用 Python3 執行此腳本,因為 ROS 將
PYTHONPATH
變數設置為與 2.7. 版本相關的某些位置,這意味著 Python 3 無法在其dist-packages
目錄中找到任何模組。我想覆蓋這種行為而不必修改外部環境。也就是說,我希望unset PYTHONPATH
,但僅限於這個腳本,最好是在其中,這樣 shebang 仍然可以工作。這可能嗎?不確定這是否更適合 superuser.com
有一個適合您需要的命令行選項:
#!/usr/bin/env python3 -E
-和
忽略所有可能設置的 PYTHON* 環境變數,例如 PYTHONPATH 和 PYTHONHOME。
我知道這個問題有點老了,但我一直在尋找我為這個問題找到的具體解決方案:原來這是使用 /usr/bin/env 的實際目的
#!/usr/bin/env -u PYTHONPATH python3
這完成了所需的unset,然後執行 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