2019. 9. 21. 22:21ㆍ꿀팁 분석 환경 설정
conda 나 virtualenv 같은 경우에는 환경을 여러 개를 만들 수 있다.
그렇다면 이러한 환경들을 여러 개로 다루면서, 사용하고 싶은 경우가 있다.
이 글에선 결론적으로 sh로 실행을 할 것이고, 그전에 일단 각각의 환경에 대해서 다른 버전을 제공하는지를 확인해보자.
일반적으로 환경에 접속을 하고 나서 실행을 한다.
보통은 activate를 하고 나서, 해당 파이썬에서 script를 실행한다.
## version check
conda info --envs
conda activate py36
python test.py
하지만 이런 경우에는 sh을 이용할 때 문제가 발생한다.
일단 sh에서 conda activate 를 하고 python을 실행해주면 될 것 같기도 한데...(테스트 안 해봄)
그래서 좀 더 찾아보니 다음과 같이 script 버전은 다음과 같다.
해당 가상 환경의 python 실행파일에다가 뒤에는 script를 실행한다.
>> test.py
import sys
import argparse
print("hi")
print(sys.version)
parser = argparse.ArgumentParser(description ="사용법 테스트")
parser.add_argument("--env_path" , type = str , help ="타겟값")
parser.add_argument("--script_path" , type = str , help ="input")
parser.add_argument("--target" , type = str , help ="타겟값")
parser.add_argument("--input" , type = str , help ="input")
arg = parser.parse_args()
print("codna 환경 : " , arg.env_path)
print("script 경로 : " , arg.script_path)
print("인풋 : " , arg.input)
print("타겟 : " , arg.target)
/root/anaconda3/envs/py36/bin/python /home/~~/test.py
그래서 다음과 같이 각 환경별로 다른 환경이 나오는 것을 알 수 있다.
>> RUN.sh
#!/bin/bash
echo "Executing a bash statement"
$1 $2 --env_path=$1 --script_path=$2 --input=$3 --target=$4
이런 식으로 shell을 만들면 환경 변수를 $1 번에서 받고 $2번에서 원하는 부분의 script를 선택하면 된다!
/home/RUN.sh /root/anaconda3/envs/kafka/bin/python /home/test.py 인풋 타겟
/home/RUN.sh /root/anaconda3/envs/py36/bin/python /home/test.py 인풋 타겟
이런 식으로 공통 shell을 만들고 원하는 환경의 주소를 적어주면 다양한 환경에서 실행해줄 수 있다!
그래서 각각 다른 환경에서 만든 것을 환경에 맞게 활용해서 할 수가 있다!
>> 여러 환경을 원하는 것을 쓸 수 있다는 장점이 있으니 유용하게 써야겠다.
예상 상황을 시뮬레이션해서 만들기
폴더에 특정 가상환경 이름을 정보를 저장한 것을 읽게해서 가상환경에 바꿔서 작동할 수 있도록 해보기
>> RUN.sh
#!/bin/bash
echo "Executing a bash statement"
set_env=$1
folder=$2
while read env; do echo $env; done < $folder/env_info.txt
$set_env/$env/bin/python $folder/test.py --env_path=$set_env --script_folder=$folder --input=$3 --target=$4 --env=$env
>> test.py
import sys
import argparse
print("hi")
print(sys.version)
parser = argparse.ArgumentParser(description ="사용법 테스트")
parser.add_argument("--env_path" , type = str , help ="타겟값")
parser.add_argument("--script_folder" , type = str , help ="input")
parser.add_argument("--env" , type = str , help ="input")
parser.add_argument("--target" , type = str , help ="타겟값")
parser.add_argument("--input" , type = str , help ="input")
arg = parser.parse_args()
print("codna 경로 : " , arg.env_path)
print("script 폴더 경로 : " , arg.script_folder)
print("가상 환경 이름 : " , arg.env)
print("인풋 : " , arg.input)
print("타겟 : " , arg.target)
>> 전에는 당연히 안되는 줄 알았는데, 당연히 되는 것이었다.(반성x10)
'꿀팁 분석 환경 설정' 카테고리의 다른 글
Pycharm Remote Sever로 파일 전부 업로드하기 (0) | 2020.04.12 |
---|---|
(Windows) Sublime Text3 설치를 할 때 도움을 받은 블로그 (0) | 2019.11.16 |
annotation 2가지 tool 소개 (0) | 2019.05.16 |
conda로 opencv 설치하는 방법 공유 Ubuntu16.04 (0) | 2019.05.14 |
conda로 설치하기 h2o4gpu (0) | 2019.05.14 |