MCPcopy Index your code
hub / github.com/Tencent/CodeAnalysis / get_origin_env

Method get_origin_env

client/util/envset.py:153–199  ·  view source on GitHub ↗

由于pyinstaller打包后的二进制包执行时候,会修改依赖库搜索环境变量,如LD_LIBRARY_PATH 所以在启动Subprocess执行命令时候,可能会影响到项目编译状况 这里会返回启动二进制包之前的环境变量,提供给Subprocess使用 1. linux和*BSD下会将LD_LIBRARY_PATH备份为LD_LIBRARY_PATH_ORIG,然后将二进制包生成的目录补充在LD_LIBRARY_PATH前面 2. Aix下是LIBPATH和LIBPATH_ORIG 3. Mac下是

(self, os_env=None)

Source from the content-addressed store, hash-verified

151 EnvSetting.env_setting_init()
152
153 def get_origin_env(self, os_env=None):
154 """
155 由于pyinstaller打包后的二进制包执行时候,会修改依赖库搜索环境变量,如LD_LIBRARY_PATH
156 所以在启动Subprocess执行命令时候,可能会影响到项目编译状况
157 这里会返回启动二进制包之前的环境变量,提供给Subprocess使用
158 1. linux和*BSD下会将LD_LIBRARY_PATH备份为LD_LIBRARY_PATH_ORIG,然后将二进制包生成的目录补充在LD_LIBRARY_PATH前面
159 2. Aix下是LIBPATH和LIBPATH_ORIG
160 3. Mac下是会unset掉DYLD_LIBRARY_PATH
161 4. windows没有影响
162
163 :param os_env: 系统环境变量dict,如果参数有传递,直接使用参数来操作,而不从os.environ里面取
164 :return: env <dict>
165 """
166 if os_env:
167 env = os_env
168 else:
169 env = dict(os.environ)
170
171 # 判断是否是pyinstaller包状态, 若是源码状态,则不处理
172 if len(sys.argv) > 0 and sys.argv[0].endswith(".py"):
173 return env
174
175 # Linux
176 if sys.platform == "linux" or sys.platform == "linux2":
177 lp_key = 'LD_LIBRARY_PATH'
178 # 收集需要的lp环境变量
179 wanted_env_list = []
180 # 收集现有进程的lp环境变量,剔除掉pyinstaller添加的临时运行目录,则为需要传递给子进程的环境变量
181 cur_lp_value = env.get(lp_key)
182 if cur_lp_value:
183 cur_lp_list = cur_lp_value.split(os.pathsep)
184 for lp_value in cur_lp_list:
185 # 当前进程的lp环境变量,剔除掉pyinstaller添加的临时运行目录,其他的为需要的
186 if not lp_value.startswith("/tmp/_MEI"):
187 wanted_env_list.append(lp_value)
188 if wanted_env_list: # 现有的lp已经包含_ORIG
189 env[lp_key] = os.pathsep.join(wanted_env_list)
190 logger.debug(f"{lp_key}={cur_lp_value}, change to {env[lp_key]}")
191 else:
192 env.pop(lp_key, None)
193 logger.debug(f"{lp_key}={cur_lp_value}, delete it.")
194
195 # Mac:
196 # 由于Mac下二进制包无法检测环境中环境变量原来是否有DYLD_LIBRARY_PATH,加上目前没有发现有项目遇到类似问题
197 # 这里暂不做处理,继续观察
198
199 return env
200
201
202class EnvSetting(object):

Callers 12

compressMethod · 0.80
decompress_by_7zMethod · 0.80
analyzeMethod · 0.80
pre_cmdMethod · 0.80
compileMethod · 0.80
analyzeMethod · 0.80
_get_id_severity_mapMethod · 0.80
scanMethod · 0.80
pre_cmdMethod · 0.80
compileMethod · 0.80
analyzeMethod · 0.80
startMethod · 0.80

Calls 2

debugMethod · 0.80
getMethod · 0.45

Tested by

no test coverage detected