파이썬은 일반적으로 가상환경에 설치하고 실행한다. 이렇게 하는 이유는 파이썬 프로그램의 버전과 다른 여러 API의 버전 관리를 위해서이다. 가상환경을 이용하면 버전이 다른 프로그램을 하나의 컴퓨터에 설치하고 필요에 맞게 환경을 바꿔서 작업할 수 있다. 이것이 파이썬 가상환경의 가장 큰 장점이다.
주로 Conda를 이용해 가상환경을 구축하게 된다. Conda는 패키지 관리가 편할 뿐만 아니라 각종 에디터도 제공하기 때문에 편리한 프로그램이다.
이렇게 Conda 환경에서 작업을 하다, 다른 컴퓨터로 옮겨서 작업을 해야 할 일이 생기기도 한다. 이럴 땐, 원래 가상환경에 있던 모든 프로그램을 다시 설치해야 하기 때문에 여간 귀찮은 일이 아닐 수 없다.
이럴 때 원래의 가상환경을 그대로 옮기면 일이 훨씬 줄어들 것이다. 새로운 컴퓨터에서 그대로 작업을 할 수 있기 때문이다.
이 포스팅에서는 Conda-pack이라는 라이브러리를 이용해서 원래 가상환경을 포장에서 다른 컴퓨터 혹은 다른 가상환경으로 옮기는 방법을 설명한다.
참고로 이 방법은 windows에서 windows로만 적용할 수 있다는 것을 기억해두길 바란다. 즉, 맥북에서 윈도우 컴퓨터로 혹은 그 반대로는 적용할 수 없다.
편의상 다음과 같이 용어를 정의해두자.
- Source : 원래 작업하던 가상환경
- Target : 옮길 새로운 가상환경
1. (Source) 우선 base 환경에 conda-pack를 설치한다.
conda install -c conda-forge conda-pack
위와 같이 진행되고 설치가 끝난다.
2. (Source) 포장하여 옮길 가상환경을 하나 만들어보자
(주의할 점은 Python 3.7 버전을 설치해야 한다)
conda create -n env-to-pack python=3.7
env-to-pack이라는 이름으로 만들었다.
conda env list
conda activate env-to-pack
conda env list로 가상환경이 잘 만들어졌는지 확인하고 activate로 환경을 바꿔준다. 다음과 같이 확인할 수 있다.
3. (Source) 필요한 라이브러리를 설치한다.
conda install <whatever>
numpy, pandas나 데이터 시각화를 위한 matplotlib등 필요한 라이브러리를 설치해준다.
4. (Source) 다시 base 가상환경으로 돌아와 env-to-pack환경을 포장한다.
모든 설치가 끝났으면 다음과 같이 base로 돌아와 방금 만들고 라이브러리들을 설치했던 env-to-pack 환경을 packed-env.tar.gz 파일명으로 packing 및 압축한다.
conda activate base
conda pack -n env-to-pack -o packed-env.tar.gz
5. (Source > Target) packed-env.tar.gz 을 새로운 target 환경으로 복사하고, target 환경으로 작업위치를 바꾼다.
6. (Target) 다음으로 압축파일을 푼다.
*Note: 윈도우에는 7-zip을 이용해 푼다. 이때 두번의 압축해제 과정을 거치게 될 것이다. 아래의 그림은 두번째 단계의 과정을 보여준다. 이 과정이 시간이 좀 걸린다.
7. (Target) 압축을 푼 폴더로 간다.
여기에서는 unpacked-environment라는 폴더에 압축을 풀었다.
여기에서부터는 관리자 모드의 cmd창을 써야한다. anaconda 터미널이나 powershell을 쓰면 작동하지 않는다.
다음과 같이 실행한다.
cd unpacked-environment
.\Scripts\activate.bat
! 성공적으로 옮겨졌다면, (unpacked-environment)로 환경이 바뀔것이다.
.\Scripts\conda-unpack.exe
! 이 실행은 에러나도 상관없다
8. (Target) (unpacked-environment) 환경에서 python을 실행해보자
이 target 환경에서는 어떤 패키지도 설치하지 않았기 때문에 python은 source 환경에서 복사된 것이다.
(unpacked-env-name) C:\Some\Path\Where\Your\Environment\Is> python
예상대로 python버전은 3.7이고 numpy와 pandas가 성공적으로 import 된 것을 볼 수 있다.
'Programming > Python' 카테고리의 다른 글
[Python] Pandas groupby 결과를 list의 dictionary로 바꾸기!! (0) | 2022.05.02 |
---|---|
[Pandas] UnicodeDecodeError: 'utf-8' codec can't decode byte 해결방법 (1) | 2022.04.13 |
[Python] 압축 파일(zip) 다루기 (ft. 압축 풀지 않고 데이터 읽기) (0) | 2021.06.14 |
[Python] pandas 파일 로딩 속도 비교 (CSV vs. Pickle 포맷) (0) | 2021.06.02 |
[Python] Pandas 'settingWithCopyWarning' 경고 메세지 없애기 (0) | 2021.05.09 |
댓글