본문 바로가기
BackEnd/Server

[Ubuntu 18.04.5] PHP에서 Anaconda 환경변수 사용하기

by 푸고배 2021. 3. 23.

1. Anaconda 설치하기

 

Anaconda | Individual Edition

Anaconda's open-source Individual Edition is the easiest way to perform Python/R data science and machine learning on a single machine.

www.anaconda.com

 

위 링크에서 Linux 64-Bit(x86) Installer의 마우스 오른쪽 클릭 후 링크주소복사를 한다.

그 다음 사용자 홈디렉터리에서 벗어나서 모든 사용자가 접근할 수 있는 경로에 리눅스 설치 파일을 다운받은 후 설치 해준다.

 

cd /opt #예시
sudo wget https://repo.anaconda.com/archive/Anaconda3-2020.11-Linux-x86_64.sh
sudo bash Anaconda3-2020.11-Linux-x86_64.sh

 

지시에 따라서 ENTER를 계속 누르다 Do you accept the license terms? [yes|no]yes를 입력한다.

아래와 같이 /home/[user_home_directory]/anaconda3가 기본 설치 location이나 다른 경로에 설치해주기 위해 Enter가 아닌 /[설치 location]/anaconda3을 입력해준다.

 

 

설치가 완료되면 conda --version으로 설치가 정상적으로 완료되었는지 확인한다.

만일 conda: command not found 오류 발생 시 bashrc를 아래와 같이 수정한다.

 

vi ~/.bashrc
export PATH=/opt/anaconda3/bin:$PATH # 하단에 해당 코드 추가
source ~/.bashrc

 

다른 user도 Anaconda 사용할 수 있게 하기 위해서 setuid 특수권한을 이용한다.

anaconda3의 경로에 아래와 같은 코드를 이용해 setuid를 설정하며, setuid 비트가 설정된 파일은 소유자 권한으로 파일을 실행시킬 수 있다. (권한 오류 해결하기 위해)

 

sudo chmod +4000 /opt/anaconda3

 

 

2. Anaconda 환경변수 만들기

 

아래의 명령어를 이용해서 환경변수를 만들어준 후, 필요한 모듈을 설치한다.

 

conda create -n [가상환경이름] python=[python Version]
conda install [패키지 이름]

 

그 외 명령어는 하단의 게시글을 참고한다.

 

아나콘다(Anaconda)를 사용하여 가상환경 만들기

딥러닝 프로젝트마다 셋팅해야할 환경들이 다른데, 모든 환경을 한 곳에 다 설치해도 되겠지만, 그럴 경우 Dependency나 Versoin에 의한 Error가 발생하는 경우가 대부분이다. 아나콘다는 가상환경을

doqtqu.tistory.com

 

 

3. PHP에서 Anaconda 환경 이용하기

 

PHP는 exec 함수를 이용해서 shell 실행(외부실행)이 가능하다.

 

exec ( string $command , array &$output = null , int &$result_code = null ) : string|false

 

command : shell 실행 구문

The command that will be executed.

 

output : shell에 print되는 결과를 변수로 저장

If the output argument is present, then the specified array will be filled with every line of output from the command. Trailing whitespace, such as \n, is not included in this array. Note that if the array already contains some elements, exec() will append to the end of the array. If you do not want the function to append elements, call unset() on the array before passing it to exec().

 

result_code : 실행 결과 코드 (0 : 에러없이 실행완료)

If the result_code argument is present along with the output argument, then the return status of the executed command will be written to this variable.

 

 

환경변수를 사용하기 위해서 /opt/anaconda3/envs/[conda_환경변수]/bin/python으로 python 코드를 실행해주면 된다.

 

<?
exec("/opt/anaconda3/envs/[conda_환경변수]/bin/python3 test.py ", $out, $status);
?>

 

 

반응형

댓글