하위 프로세스는 Python 스크립트에서 conda 환경을 활성화합니다.

하위 프로세스는 Python 스크립트에서 conda 환경을 활성화합니다.

저는 conda를 사용하여 별도의 변수에 일부 모듈을 설치하는 Python 프로그램을 작업 중입니다. 따라서 스크립트를 실행하기 전에 Unix 셸에서 다음 명령을 호출하여 환경을 가져옵니다.

conda activate my-rdkit-env

내 Python 스크립트에서 호출할 수 있습니까? 아래와 같이 시도했지만 성공하지 못했습니다.

import subprocess
subprocess.run('conda init bash', shell=True)
#subprocess.run('conda activate my-rdkit-env', shell=True)

답변1

~에서이 답변환경에서 직접 스크립트를 실행할 수 있어야 합니다. 그러면 작업 환경에서 다른 코드를 실행하는 동안 환경을 활성화하거나 비활성화할 필요가 없습니다.

process = subprocess.Popen(
    "conda run -n ${CONDA_ENV_NAME} python script.py".split(), , stdout=subprocess.PIPE
)
output, error = process.communicate()

답변2

~에서https://github.com/conda/conda/issues/9296

Conda init는 conda를 쉘 함수로 등록합니다. 활성화하려면 이 비트가 쉘을 초기화해야 합니다. 당신은 다음과 같은 것을 할 수 있습니다

. $CONDA_PREFIX/etc/profile.d/conda.sh && conda activate test4 && conda env list

예를 들어:

import subprocess
cmd = '. $CONDA_PREFIX/etc/profile.d/conda.sh && conda activate my-rdkit-env' 
subprocess.call(cmd, shell=True, executable='/bin/bash')

노트:

이 코드를 실행할 때 이미 다른 conda 환경에 있는 경우 $CONDA_PREFIX해당 환경의 접두사가 제공됩니다. 기본 버전을 얻으려면 터미널을 열고 $CONDA_PREFIX. 그런 다음 $CONDA_PREFIX프롬프트에서 제공하는 내용(일반적으로 와 같은 내용 /home/user/anaconda3) 으로 바꿉니다 .

관련 정보