PY-82352 Fix reading of env files for old command line python runner

(cherry picked from commit 81df145e58cf0a509dd92ad1157916fc77978afb)

IJ-MR-175438

GitOrigin-RevId: 7769f7bdfa01a0543c79b765367e774ce23a2c3c
This commit is contained in:
Alexey Katsman
2025-09-12 13:56:18 +02:00
committed by intellij-monorepo-bot
parent d64795ee18
commit 5d79b9c3bb
2 changed files with 21 additions and 24 deletions

View File

@@ -169,8 +169,8 @@
<configurationType implementation="com.jetbrains.python.run.FastAPILockedRunConfigurationType" order="first"/>
<facetIgnorer implementation="com.jetbrains.python.run.DjangoFacetIgnorer"/>
<programRunner implementation="com.jetbrains.python.run.PythonRunner"/>
<programRunner implementation="com.jetbrains.python.debugger.PyDebugRunner"/>
<programRunner implementation="com.jetbrains.python.run.PythonRunner" order="before defaultRunRunner"/>
<programRunner implementation="com.jetbrains.python.debugger.PyDebugRunner" order="before defaultDebugRunner"/>
<runConfigurationProducer implementation="com.jetbrains.python.run.PythonRunConfigurationProducer"/>
<xdebugger.breakpointType implementation="com.jetbrains.python.debugger.PyLineBreakpointType"/>
<xdebugger.breakpointType implementation="com.jetbrains.python.debugger.PyExceptionBreakpointType"/>

View File

@@ -649,20 +649,11 @@ public abstract class PythonCommandLineState extends CommandLineState {
*/
protected static void initEnvironment(Project project,
SdkAdditionalData data,
GeneralCommandLine commandLine,
PythonRunParams runParams,
@NotNull GeneralCommandLine commandLine,
@NotNull PythonRunParams runParams,
boolean isDebug) {
Map<String, String> env = Maps.newHashMap();
final Map<String, String> env = prepareEnv(project, runParams, true);
setupEncodingEnvs(env, commandLine.getCharset());
if (runParams.getEnvs() != null) {
env.putAll(runParams.getEnvs());
}
addCommonEnvironmentVariables(getInterpreterPath(project, runParams), env, true);
setupVirtualEnvVariables(runParams, env, runParams.getSdkHome());
commandLine.getEnvironment().clear();
commandLine.getEnvironment().putAll(env);
commandLine.withParentEnvironmentType(runParams.isPassParentEnvs() ? ParentEnvironmentType.CONSOLE : ParentEnvironmentType.NONE);
@@ -694,19 +685,13 @@ public abstract class PythonCommandLineState extends CommandLineState {
boolean isDebug,
@NotNull HelpersAwareTargetEnvironmentRequest helpersAwareTargetRequest,
@Nullable Sdk sdk) {
Map<String, String> env = Maps.newHashMap();
var envParameters = configureEnvsFromFiles(runParams, true);
env.putAll(envParameters);
if (runParams.getEnvs() != null) {
env.putAll(runParams.getEnvs());
}
boolean addPyCharmHosted = true;
if (sdk != null && !CondaPythonExecKt.getUsePythonForLocalConda()) {
addPyCharmHosted = PySdkExtKt.getOrCreateAdditionalData(sdk).getFlavor().providePyCharmHosted();
}
addCommonEnvironmentVariables(getInterpreterPath(project, runParams), env, addPyCharmHosted);
final Map<String, String> env = prepareEnv(project, runParams, addPyCharmHosted);
setupVirtualEnvVariables(runParams, env, runParams.getSdkHome());
setupEncodingEnvs(commandLine, commandLine.getCharset());
// Carefully patch environment variables
Map<String, Function<TargetEnvironment, String>> map =
@@ -714,8 +699,6 @@ public abstract class PythonCommandLineState extends CommandLineState {
TargetEnvironmentRequest targetEnvironmentRequest = helpersAwareTargetRequest.getTargetEnvironmentRequest();
PythonScripts.extendEnvs(commandLine, map, targetEnvironmentRequest.getTargetPlatform());
setupEncodingEnvs(commandLine, commandLine.getCharset());
buildPythonPath(project, commandLine, runParams, pathMapper, isDebug, targetEnvironmentRequest);
for (PythonCommandLineTargetEnvironmentProvider envProvider : PythonCommandLineTargetEnvironmentProvider.EP_NAME.getExtensionList()) {
@@ -723,6 +706,20 @@ public abstract class PythonCommandLineState extends CommandLineState {
}
}
private static Map<String, String> prepareEnv(@NotNull Project project,
@NotNull PythonRunParams runParams,
boolean addPyCharmHosted) {
Map<String, String> env = Maps.newHashMap();
env.putAll(configureEnvsFromFiles(runParams, true));
if (runParams.getEnvs() != null) {
env.putAll(runParams.getEnvs());
}
addCommonEnvironmentVariables(getInterpreterPath(project, runParams), env, addPyCharmHosted);
setupVirtualEnvVariables(runParams, env, runParams.getSdkHome());
return env;
}
private static void setupVirtualEnvVariables(PythonRunParams myConfig, Map<String, String> env, String sdkHome) {
Sdk sdk = PythonSdkUtil.findSdkByPath(sdkHome);
if (sdk != null &&