PowerShell 7.5.0 그리고 Conda 25.1.0 사용 시 오류

이틀 전에 .NET 8.0 기반 PowerShell 버전 7.4.7, 그리고 .NET 9.0 기반 PowerShell 버전 7.5.0 정식 버전이 함께 배포되었습니다. 따라서 7.5.0이 안정화 버전으로 승격됨과 동시에, 7.4.7은 장기 지원 버전(LTS, Long Term Support)으로 전환되었습니다. 그런데 새 버전이 배포되자마자 Conda 버전 25.1.0 기반의 가상 개발 환경에서 Conda 명령이 제대로 인식되지 않는 오류 등이 갑자기 발생하기 시작했습니다.

PowerShell
PowerShell

특히 PowerShell 7.5.0 환경에서 Conda 환경의 기본적인 명령에 해당하는 conda activate, conda list 등을 실행하면 다음과 같은 오류 메시지가 발생하면서 실행이 되지 않기 때문에 당황하시게 될 것 같습니다.

usage: conda-script.py [-h] [-v] [--no-plugins] [-V] COMMAND …
conda-script.py: error: argument COMMAND: invalid choice: '' (choose from 'activate', 'clean', 'commands', 'compare', 'config', 'create', 'deactivate', 'env', 'export', 'info', 'init', 'install', 'list', 'notices', 'package', 'content-trust', 'doctor', 'repoquery', 'pack', 'tree', 'remove', 'uninstall', 'rename', 'run', 'search', 'update', 'upgrade')

다행히 해당 문제의 원인과 해결 방안은 도출되어 있는 상황이므로 해당 이슈를 확인하시면 당장 Conda와 PowerShell 7.5.0을 함께 사용하실 수 있습니다만, PowerShell 7.5.0에서 WG Engine이 재구축되면서 몇 가지 문제가 남아 있는 것으로 보이기 때문에 당장 새 버전을 사용해야만 하는 상황이 아니라면 해당 문제가 공식적으로 해결되기 전까지는 PowerShell 7.4.7을 사용하시는 것을 권장합니다.

이런 경우는 거의 없겠지만 만약 사내 정책 등의 이유로 PowerShell 7.5.0을 무조건 사용해야 한다면, conda.psm1 스크립트 파일에서 환경 변수(Environment Variables)를 초기화하지 않는 문제를 해결하기 위해 Invoke-Conda() 메서드를 다음과 같이 수정하면 됩니다.

function Invoke-Conda() {
    # Don't use any explicit args here, we'll use $args and tab completion
    # so that we can capture everything, INCLUDING short options (e.g. -n).
    if ($Args.Count -eq 0) {
        # No args, just call the underlying conda executable.
        & $Env:CONDA_EXE $Env:_CE_M $Env:_CE_CONDA;
    }
    else {
        $Command = $Args[0];
        if ($Args.Count -ge 2) {
            $OtherArgs = $Args[1..($Args.Count - 1)];
        } else {
            $OtherArgs = @();
        }
        switch ($Command) {
            "activate" {
                Enter-CondaEnvironment @OtherArgs;
                $Env:_CE_M = $null; $Env:_CE_CONDA = $null;
            }
            "deactivate" {
                Exit-CondaEnvironment;
                $Env:_CE_M = $null; $Env:_CE_CONDA = $null;
            }

            default {
                # There may be a command we don't know want to handle
                # differently in the shell wrapper, pass it through
                # verbatim.
                & $Env:CONDA_EXE $Env:_CE_M $Env:_CE_CONDA $Command @OtherArgs;
            }
        }
    }
}
Anaconda
Anaconda

일단 저는 앞에서 말씀드린 것처럼 PowerShell 7.4.7을 당분간 사용할 예정입니다. 사실 제가 작성하는 스크립트는 지금도 이미 차고 넘치기 때문에 크게 문제되지 않는 상황이기도 하구요. 또한 제 빌드 스크립트는 매번 실행 전에 컴포넌트를 업데이트하고 테스트하는 과정을 거치는데, 이 과정에서 수동으로 수정한 스크립트가 다시 원상 복구되기 때문에 PowerShell 버전을 낮추는 방식을 사용할 수 밖에 없더군요.

최근 들어 제가 사용하는 도구들이 점점 늘어나면서 조금씩 어긋나는 경우가 발생하는 일이 종종 있습니다. 예를 들면 Pandoc이 3.5에서 3.6으로 갱신되면서 갑자기 문서 변환이 되지 않는 문제도 있었고, Nuitka는 말할 필요도 없구요. Nuitka에 제가 제기했던 문제도 10개는 넘어가는 것 같습니다.

이런 말씀을 드리면 분명 너나 잘하라고 하실 것 같습니다. 최근에 제 Chzzk Downloader Suite에도 문제 보고가 들어오는 일이 점점 많이 늘어나고 있는 상황이라서 조금 더 코드를 주의 깊게 개선하고 테스트도 더 많이 진행하지 않으면 안 되겠다는 생각을 하고 있습니다.

어쨌든 새 버전의 갱신과 함께 저와 같은 문제를 겪으시는 분들이 계시지 않을까 하여 이렇게 두서 없이 글을 적어 보았습니다.

추가 갱신 정보

해당 오류는 conda의 오류로 판명되어 2025년 1월 29일에 conda 25.1.1 버전이 배포되었고, 이어 30일 오전 4시 10분에 Anaconda 공식 채널에 conda 25.1.1 패키지가 포함되었습니다. 따라서 PowerShell 7.4.7 이하 버전에서 다음 명령으로 conda를 갱신한 후, PowerShell 7.5.0으로 갱신하면 정상적으로 사용할 수 있습니다.

conda update conda
conda --version

Related Posts

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.