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