![避免将环境变量传递给 python 脚本](https://linux22.com/image/115966/%E9%81%BF%E5%85%8D%E5%B0%86%E7%8E%AF%E5%A2%83%E5%8F%98%E9%87%8F%E4%BC%A0%E9%80%92%E7%BB%99%20python%20%E8%84%9A%E6%9C%AC.png)
我有一个小的 python 脚本
#!/usr/bin/env python3
import some_python3_module
def main():
# do stuff
if __name__ == '__main__':
main()
并且无法使用 Python3 运行此脚本,因为 ROS 将变量设置为某些与 2.7 版本相关的位置,这意味着 Python 3 在其目录PYTHONPATH
中找不到任何模块。dist-packages
我想重写这种行为,而不必修改外部环境。也就是说,我希望unset PYTHONPATH
,但仅限于这个脚本,并且最好是在其中,这样 shebang 仍然可以工作。这可能吗?
不确定这是否更适合 superuser.com
答案1
有一个命令行选项可以满足您的需求:
#!/usr/bin/env python3 -E
-E
忽略可能设置的所有 PYTHON* 环境变量,例如 PYTHONPATH 和 PYTHONHOME。
答案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