避免将环境变量传递给 python 脚本

避免将环境变量传递给 python 脚本

我有一个小的 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

相关内容