我们可以将python脚本修改的环境变量传递给外壳吗?

发布于 2024-12-14 19:27:49 字数 190 浏览 0 评论 0原文

对于以下 python 脚本:

import os
os.system('PYTHONPATH=\user\...')
os.system('export PYTHONPATH')
....

执行此脚本后,我们是否可以将 PYTHONPATH 变量“导出”到 shell?

For the following python script:

import os
os.system('PYTHONPATH=\user\...')
os.system('export PYTHONPATH')
....

Is there anyway we can "export" the PYTHONPATH variable to the shell after executing this script?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

旧时模样 2024-12-21 19:27:49

不,这是不可能的。当Python进程启动时,它会获得自己的环境副本,从父shell复制。 Python进程只能修改私有副本,并且更改不会传播回父进程。

如果你想做这样的事情,你能得到的最好的方法是打印执行所需的环境变量更改所需的 shell 命令,例如

print "export PYTHONPATH=$PYTHONPATH:..."

并使用运行脚本

eval "$(python myscript.py)"

No, this is not possible. When the Python process is launched, it gets its own copy of the environment, copied from the parent shell. The Python process can only modify the private copy, and changes are not propagated back to the parent process.

If you want to do something like this, the best you can get is to print the shell commands needed to do the desired environment variable changes, e.g.

print "export PYTHONPATH=$PYTHONPATH:..."

and run the script using

eval "$(python myscript.py)"
明月夜 2024-12-21 19:27:49

斯文的回答很好。

另一种可能的方法是从 Python 脚本调用新的 shell 进程,具体取决于您的要求。由于新 shell 是 Python 进程的子进程,因此它将继承所有环境变量。

显然这并不总是您想要做的,但它是一种替代方案。

Sven's answer is a good one.

Another possible approach, depending on your requirements, is to invoke a new shell process from the Python script. Since the new shell is a child of the Python process, it will inherit any environment variables.

Obviously this isn't always what you want to do, but it's an alternative.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文