환경
os: Linux, CentOS7
python: 3.6.8
1. VM 준비
내부망에 넣을 라이브러리를 준비하기 위해 VM을 설치한다.
vm 설치 및 os설치는 아래 링크를 참고하여 준비한다.
(ISO준비 : https://dongdu-blog.tistory.com/57 )
(vm 설치 : https://dongdu-blog.tistory.com/61 )
vm에서 라이브러리를 설치하고 해당 라이브러리 설치 파일을 내 pc로 뽑아내서 내부망에 설치할 수 있도록 준비 할 것이다.
2. yum 재설정
yum을 이용해서 원하는 python버전을 설치해야한다.
하지만 CentOS 7은 현재 지원이 종료된 버전이다. 그래서 최신버전 프로그램들이 설치가 안될 것이다.
미러링 사이트까지도 막혔기 때문이다..
https://developer-woong.tistory.com/112#google_vignette 블로그를 참고하여 설정해주자.
1. su - 를 이용하여 슈퍼유저 계정으로 접속한다.
2. cd /etc/yum.repos.d/ 로 이동
3. vi CentOS-Base.repo
4. mirrorlist에 주석 치고 새로운 baseurl을 추가해준다.
[base]
baseurl=http://centos.mirror.cdnetworks.com/7/os/x86_64
[updates]
baseurl=http://centos.mirror.cdnetworks.com/7/updates/x86_64
[extras]
baseurl=http://centos.mirror.cdnetworks.com/7/extras/x86_64
[centosplus]
baseurl=http://centos.mirror.cdnetworks.com/7/centosplus/x86_64


5. wq로 저장하고 빠져나온다
6. yum clean all 으로 적용시켜준다.
3. Python3.6.8 설치
에러가 나는 구 baseurl을 바꿔주었지만
파이썬 라이브러리를 추가하기 위해서 centos.mirror 만으로는 부족하다.
centos.mirror는 리눅스 시스템에서 필요한 os 기본 패키지들이 있는 편이라서 (운영체제와 서버용 프로그램들 위주)
EPEL이나 IUS를 설치해줘야한다.
EPEL이나 IUS는 패키지가 모여있는 repository라고 생각하면 된다.
원래 yum install -y https://repo.ius.io/ius-release-el7.rpm 하면 쉽게 python3.6버전 다운로드가 가능했었는데 막힌듯 하다.


vault.ius.io로 가보니 25년 8월 18일 자로 패키지가 세팅 된거 보니 진짜 얼마전에 이동된 듯 하다..
그래서 변경된 ISU를 사용해보려고 했는데,
yum install -y https://vault.ius.io/el7/x86_64/packages/i/ius-release-2-1.el7.ius.noarch.rpm
yum list available python36*
를 해보았으나
failure: repodata/repomd.xml from ius: [Errno 256] No more mirrors to try.
https://repo.ius.io/7/x86_64/repodata/repomd.xml: [Errno 14] HTTPS Error 404 - Not Found
라고 뜬다. 자꾸 변경되기 전의 ius쪽으로 붙는것 같다.(url이 vault가 아님)
원래라면 ius로 바로 python36 깔수가 있었는데 ius 폐쇄로 인해 의존성을 고려해 가며 순차적으로 rpm파일로 설치해야 할 것으로 보인다.
따라서 그냥 강제로 vault에서 python36을 골라서 다운받아줄 것이다.
1. cd /home/유저명/Downloads
2. python rpm다운로드
wget https://vault.ius.io/el7/x86_64/packages/p/python36u-libs-3.6.8-1.el7.ius.x86_64.rpm

[root@localhost Downloads]# wget https://vault.ius.io/el7/x86_64/packages/p/python36u-libs-3.6.8-1.el7.ius.x86_64.rpm
--2025-09-22 01:54:41-- https://vault.ius.io/el7/x86_64/packages/p/python36u-libs-3.6.8-1.el7.ius.x86_64.rpm
Resolving vault.ius.io (vault.ius.io)... 184.27.174.74, 2600:140b:2c00:b92::3a15, 2600:140b:2c00:b89::3a15
Connecting to vault.ius.io (vault.ius.io)|184.27.174.74|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 9306448 (8.9M) [application/octet-stream]
Saving to: ‘python36u-libs-3.6.8-1.el7.ius.x86_64.rpm’
100%[==========================================>] 9,306,448 7.49MB/s in 1.2s
2025-09-22 01:54:45 (7.49 MB/s) - ‘python36u-libs-3.6.8-1.el7.ius.x86_64.rpm’ saved [9306448/9306448]
3. python을 위한 의존성 lib 다운로드
wget https://vault.ius.io/el7/x86_64/packages/p/python36-3.6.8-2.el7.ius.x86_64.rpm

[root@localhost Downloads]# wget https://vault.ius.io/el7/x86_64/packages/p/python36u-3.6.8-1.el7.ius.x86_64.rpm
--2025-09-22 01:58:19-- https://vault.ius.io/el7/x86_64/packages/p/python36u-3.6.8-1.el7.ius.x86_64.rpm
Resolving vault.ius.io (vault.ius.io)... 23.38.15.201, 2600:140b:2c00:b89::3a15, 2600:140b:2c00:b92::3a15
Connecting to vault.ius.io (vault.ius.io)|23.38.15.201|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 59388 (58K) [application/octet-stream]
Saving to: ‘python36u-3.6.8-1.el7.ius.x86_64.rpm’
100%[==========================================>] 59,388 --.-K/s in 0.06s
2025-09-22 01:58:19 (951 KB/s) - ‘python36u-3.6.8-1.el7.ius.x86_64.rpm’ saved [59388/59388]
4. 다운받은 rpm 설치
[root@localhost Downloads]# rpm -ivh python36u-libs-3.6.8-1.el7.ius.x86_64.rpm python36u-3.6.8-1.el7.ius.x86_64.rpm
따로 설치하니까 서로간에 의존성 문제가 나서 둘을 동시에 설치해준다.
[root@localhost Downloads]# ll
total 9152
-rw-r--r--. 1 root root 59388 Aug 17 17:49 python36u-3.6.8-1.el7.ius.x86_64.rpm
-rw-r--r--. 1 root root 9306448 Aug 17 17:49 python36u-libs-3.6.8-1.el7.ius.x86_64.rpm
[root@localhost Downloads]# rpm -ivh python36u-libs-3.6.8-1.el7.ius.x86_64.rpm python36u-3.6.8-1.el7.ius.x86_64.rpm
warning: python36u-libs-3.6.8-1.el7.ius.x86_64.rpm: Header V4 RSA/SHA256 Signature, key ID 4b274df2: NOKEY
Preparing... ################################# [100%]
Updating / installing...
1:python36u-3.6.8-1.el7.ius ################################# [ 50%]
2:python36u-libs-3.6.8-1.el7.ius ################################# [100%]
5. 추가로 필요한 pip3도 설치
wget https://vault.ius.io/el7/x86_64/packages/p/python36u-pip-9.0.1-1.ius.el7.noarch.rpm

[root@localhost Downloads]# wget https://vault.ius.io/el7/x86_64/packages/p/python36u-pip-9.0.1-1.ius.el7.noarch.rpm
--2025-09-23 17:42:17-- https://vault.ius.io/el7/x86_64/packages/p/python36u-pip-9.0.1-1.ius.el7.noarch.rpm
Resolving vault.ius.io (vault.ius.io)... 23.38.15.201, 2600:140b:2:198::3a15, 2600:140b:2:18f::3a15
Connecting to vault.ius.io (vault.ius.io)|23.38.15.201|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 1842484 (1.8M) [application/octet-stream]
Saving to: ‘python36u-pip-9.0.1-1.ius.el7.noarch.rpm’
100%[=============================================>] 1,842,484 2.39MB/s in 0.7s
2025-09-23 17:42:20 (2.39 MB/s) - ‘python36u-pip-9.0.1-1.ius.el7.noarch.rpm’ saved [1842484/1842484]
6. pip을 위한 setuptoos도 같이 다운로드
wget https://vault.ius.io/el7/x86_64/packages/p/python36u-setuptools-39.0.1-1.ius.el7.noarch.rpm

[root@localhost Downloads]# wget https://vault.ius.io/el7/x86_64/packages/p/python36u-setuptools-39.0.1-1.ius.el7.noarch.rpm
--2025-09-23 17:46:02-- https://vault.ius.io/el7/x86_64/packages/p/python36u-setuptools-39.0.1-1.ius.el7.noarch.rpm
Resolving vault.ius.io (vault.ius.io)... 184.27.174.74, 2600:140b:2:18f::3a15, 2600:140b:2:198::3a15
Connecting to vault.ius.io (vault.ius.io)|184.27.174.74|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 658936 (643K) [application/octet-stream]
Saving to: ‘python36u-setuptools-39.0.1-1.ius.el7.noarch.rpm’
100%[=============================================>] 658,936 1.15MB/s in 0.5s
2025-09-23 17:46:04 (1.15 MB/s) - ‘python36u-setuptools-39.0.1-1.ius.el7.noarch.rpm’ saved [658936/658936]
그리고 rpm 설치까지 진행.
[root@localhost Downloads]# rpm -ivh python36u-setuptools-39.0.1-1.ius.el7.noarch.rpm python36u-pip-9.0.1-1.ius.el7.noarch.rpm
warning: python36u-setuptools-39.0.1-1.ius.el7.noarch.rpm: Header V4 RSA/SHA256 Signature, key ID 4b274df2: NOKEY
Preparing... ################################# [100%]
Updating / installing...
1:python36u-setuptools-39.0.1-1.ius################################# [ 50%]
2:python36u-pip-9.0.1-1.ius.el7 ################################# [100%]
이 역시 따로 설치하면 의존성 문제 나기 때문에 동시에 설치해준다.
7. python3.6.8 설치 확인
[root@localhost bin]# which python
/bin/python
/bin 으로 이동
(설치 전)

(설치 후)

python3.6관련해서 설치가 된 것을 볼 수 있고 (위치 : /bin)
[root@localhost bin]# python3.6 --version
Python 3.6.8
이렇게 설치된 것을 확인 할 수 있다!
8. python3 심볼릭 링크 생성
[root@localhost bin]# python3 --version
bash: python3: command not found...
Similar command is: 'python'
이렇게 바로 python3으로 3.6.8을 사용할 수 없으므로.. 링크를 연결해주어야 한다.
기존에 python3으로 연결 된 것이 없으므로 바로 연결해주면 되므로 링크꼬임에 대해서 크게 고민하지 않아도 된다.
(만약 기존에 python3 링크가 있다면 꼬일 수 있음)
/bin 은 /usr/bin의 심볼릭 링크이기 때문에 /usr/bin 으로 이동해서 등록해주자.
[root@localhost bin]# ls -ld /bin
lrwxrwxrwx. 1 root root 7 Sep 22 00:42 /bin -> usr/bin
[root@localhost bin]# cd /usr/bin
#심볼릭링크 등록
[root@localhost bin]# ln -s /usr/bin/python3.6 /bin/python3
[root@localhost bin]# ll python*
lrwxrwxrwx. 1 root root 7 Sep 22 00:44 python -> python2
lrwxrwxrwx. 1 root root 9 Sep 22 00:44 python2 -> python2.7
-rwxr-xr-x. 1 root root 7144 Oct 14 2020 python2.7
lrwxrwxrwx. 1 root root 18 Sep 23 18:45 python3 -> /usr/bin/python3.6
-rwxr-xr-x. 2 root root 11384 May 2 2019 python3.6
-rwxr-xr-x. 2 root root 11384 May 2 2019 python3.6m
[root@localhost bin]# python3 --version
Python 3.6.8
이렇게하면 python 3.6.8 버전을 python3으로 간단하게 사용할 수 있다!
원래 한번에 다 적으려고 했는데
내가 작업했을 때랑 python설치하는 방법이 바뀌어서 나누어서 작성하게 되었다.
다음 게시글에는 내부망 설치용 lib을 whl 파일로 만들어 준비하는 방법에 대해서 설명하도록 하겠다.
'IT > Data Analysis' 카테고리의 다른 글
| [python 라이브러리 세팅] 내부망에 넣을 라이브러리 준비 (2) - python라이브러리 .whl 파일로 준비하기 (0) | 2025.12.15 |
|---|---|
| [python oracle] oracledb insert할 때 execute, executemany 안되는 에러 (3) | 2025.07.10 |
| [가시화] multiprocessing으로 이미지 저장하기 (matplotlib) (1) | 2025.07.10 |
| [데이터 전처리] 크기가 큰 csv파일 One hot encoding 시 메모리 부족 회피하는법 (0) | 2024.11.29 |
| [기상 데이터] LCC 투영법 (1) - LCC 투영법 기반 격자 데이터에서 위경도 구하기 (LCC 격자 <-> 위경도 변환) (2) | 2024.11.20 |