Skip to content

Commit

Permalink
Fix: [Installer] Windows で poetry install の実行に失敗する問題を修正
Browse files Browse the repository at this point in the history
subprocess.run() の env 引数に OS のデフォルト環境変数を与えないと諸々挙動が壊れるらしい  盲点だった…
  • Loading branch information
tsukumijima committed Nov 15, 2023
1 parent b732e01 commit a61ef97
Showing 1 changed file with 18 additions and 4 deletions.
22 changes: 18 additions & 4 deletions installer/Utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -746,24 +746,31 @@ def RunSubprocess(
サブプロセスを実行する。
Args:
name (str): プロセス名
name (str): 表示する実行中タスクの名前
args (list[str]): 実行するコマンド
cwd (Path): カレントディレクトリ
environment (dict[str, str], optional): 追加の環境変数. Defaults to None.
error_message (str, optional): エラー発生時のエラーメッセージ. Defaults to '予期しないエラーが発生しました。'.
error_log_name (str, optional): エラー発生時のエラーログ名. Defaults to 'エラーログ'.
Returns:
bool: 成功したかどうか
"""

# OS デフォルトの環境変数をコピーし、その上に追加の環境変数を適用する
## OS デフォルトの環境変数がないと、Windows で名前解決に失敗したりなどの予期しない問題が発生する
env = os.environ.copy()
if environment is not None:
env.update(environment)

print(Padding(name, (1, 2, 0, 2)))
progress = CreateBasicInfiniteProgress()
progress.add_task('', total=None)
with progress:
result = subprocess.run(
args = args,
cwd = cwd,
env = environment,
env = env,
stdout = subprocess.PIPE, # 標準出力をキャプチャする
stderr = subprocess.STDOUT, # 標準エラー出力を標準出力にリダイレクト
text = True, # 出力をテキストとして取得する
Expand Down Expand Up @@ -791,18 +798,25 @@ def RunSubprocessDirectLogOutput(
サブプロセスを実行する。(ログをそのまま出力する)
Args:
name (str): プロセス名
name (str): 表示する実行中タスクの名前
args (list[str]): 実行するコマンド
cwd (Path): カレントディレクトリ
environment (dict[str, str], optional): 追加の環境変数. Defaults to None.
error_message (str, optional): エラー発生時のエラーメッセージ. Defaults to '予期しないエラーが発生しました。'.
Returns:
bool: 成功したかどうか
"""

# OS デフォルトの環境変数をコピーし、その上に追加の環境変数を適用する
## OS デフォルトの環境変数がないと、Windows で名前解決に失敗したりなどの予期しない問題が発生する
env = os.environ.copy()
if environment is not None:
env.update(environment)

print(Padding(name, (1, 2, 1, 2)))
print(Rule(style=Style(color='cyan'), align='center'))
subprocess_result = subprocess.run(args, cwd = cwd, env = environment)
subprocess_result = subprocess.run(args, cwd = cwd, env = env)
print(Rule(style=Style(color='cyan'), align='center'))

if subprocess_result.returncode != 0:
Expand Down

0 comments on commit a61ef97

Please sign in to comment.