저는 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
) 으로 바꿉니다 .