相关疑难解决方法(0)

是否可以在python中更改父进程的环境?

在Linux中当我从shell调用python时,它复制了它的环境,并启动了python进程.因此,如果我执行以下操作:

import os
os.environ["FOO"] = "A_Value"
Run Code Online (Sandbox Code Playgroud)

当python进程返回时,FOO(假设它原来是未定义的)仍将是未定义的.有没有办法让python进程(或任何子进程)修改其父进程的环境?

我知道你通常用类似的东西来解决这个问题

source script_name.sh
Run Code Online (Sandbox Code Playgroud)

但这与我的其他要求相冲突.

python linux environment

19
推荐指数
3
解决办法
1万
查看次数

如何在Python中使环境变量更改?

根据我的阅读,Python实例中对环境变量的任何更改仅在该实例中可用,并在实例关闭后消失.是否有任何方法可以通过将它们提交给系统来使它们坚持下去?

我需要这样做的原因是因为在我工作的工作室,像Maya这样的工具在很大程度上依赖于环境变量来配置跨多个平台的路径.

我的测试代码是

import os
os.environ['FAKE'] = 'C:\\'
Run Code Online (Sandbox Code Playgroud)

打开另一个Python实例并请求os.environ['FAKE']产生一个KeyError.

注意:可移植性将是一个问题,但我正在编写的小API将能够检查操作系统版本并在必要时触发不同的命令.

也就是说,我已经走了使用Windows注册表技术的路线,只会编写替代方法,在其他平台上调用shell脚本,因为它们成为需求.

python environment-variables

19
推荐指数
5
解决办法
3万
查看次数

通过Ruby持久化环境变量

我试图在Ruby中设置我的DOS环境变量,并在脚本退出后保持它.例如,如果我想要一个ruby脚本set_abc_env.rb将环境变量'ABC'设置为'blah',我希望运行以下命令:

C:> echo %ABC%
C:> set_abc_env.rb
C:> echo %ABC% blah
Run Code Online (Sandbox Code Playgroud)

我该怎么做呢?

ruby windows dos environment-variables

8
推荐指数
1
解决办法
8711
查看次数

使用“默认”环境变量启动新的子进程

我正在编写一个构建脚本来解析依赖的共享库(及其共享库等)。这些共享库不存在于正常的PATH环境变量中。

为了使构建过程正常工作(让编译器找到这些库),PATH已更改为包含这些库的目录。

构建过程是这样的:

加载器脚本(更改 PATH)-> 基于 Python 的构建脚本 -> 配置 -> 构建 -> 解决依赖关系 -> 安装。

Python 实例PATH从其父 shell 继承更改的变量。

在 Python 中,我试图获取默认值PATH(而不是从其父 shell 继承的默认值)。

想法:

解决“默认”PATH 变量的想法是以某种方式“通知”操作系统启动一个新进程(运行打印 PATH 的脚本),但该进程不是当前Python 进程的子进程(并且可能不会继承其修改的环境变量)。

尝试的实现:

import os
import sys

print os.environ["PATH"]
print "---"
os.spawnl(os.P_WAIT, sys.executable, "python", "-c \"import os;print(os.environ['PATH']);\"")
Run Code Online (Sandbox Code Playgroud)

os.spawn似乎使用与调用它的 Python 进程相同的环境变量。我也尝试过这种方法subprocess.POpen,但没有成功。

这个办法可以实施吗?如果没有,替代方法是什么(假设加载器脚本和整个过程不能改变)?

我目前使用的是 Windows,但构建脚本是跨平台的。

编辑:

跨平台的限制似乎过于严格。现在可以考虑同一概念的不同实现。

例如,使用答案中的代码,Windows 注册表可用于获取“默认”系统PATH变量。

try:
    import _winreg as winreg
except ImportError: …
Run Code Online (Sandbox Code Playgroud)

python environment-variables

4
推荐指数
1
解决办法
6644
查看次数

标签 统计

environment-variables ×3

python ×3

dos ×1

environment ×1

linux ×1

ruby ×1

windows ×1