설치할 파이썬 버전: 3.8.8
원래 아래와 같은 절차로 venv 가상환경을 설치하려고 했다.
# 1. 파이썬 3.8.8 소스코드 다운로드
wget https://www.python.org/ftp/python/3.8.8/Python-3.8.8.tgz
tar -xf Python-3.8.8.tgz
cd Python-3.8.8
# 2. 파이썬 빌드
./configure --enable-optimizations
make
make install
# 3. 이전 디렉토리로 이동
cd ..
# 4. 가상환경 생성
python3.8 -m venv myenv
# 5. 가상환경 실행
myenv\Scripts\activate
# 6. 가상환경 비활성화
deactivate
위 단계를 차례로 진행하다가 2 단계에서 make install에서 권한이 없어 다음과 같은 오류가 났다.
if test "no-framework" = "no-framework" ; then \
/usr/bin/install -c python /usr/local/bin/python3.8; \
else \
/usr/bin/install -c -s Mac/pythonw /usr/local/bin/python3.8; \
fi
/usr/bin/install: 일반 파일 '/usr/local/bin/python3.8'을(를) 생성할 수 없음: 허가 거부
Makefile:1234: recipe for target 'altbininstall' failed
make: *** [altbininstall] Error 1
오류 해결을 위해 클로드가 알려준대로 --prefix 옵션을 사용하여 파이썬을 다른 디렉토리에 설치하는 방법을 사용했다.
cd ~
nano .bashrc
export PATH=$HOME/python/bin:$PATH
source ~/. bashrc
명령어를 실행하여 .bashrc
파일을 다시 로드.1~5번 단계를 마치고 다시 파이썬을 다운로드하고 설치했다. 또 6번 단계 make install
에서 오류가 발생했다.
File "/home/user/Python-3.8.8/Lib/ensurepip/__init__.py", line 35, in _run_pip
return subprocess.run([sys.executable, "-c", code], check=True).returncode
File "/home/user/Python-3.8.8/Lib/subprocess.py", line 516, in run
raise CalledProcessError(retcode, process.args,
subprocess.CalledProcessError: Command '['/home/user/Python-3.8.8/python', '-c', '\nimport runpy\nimport sys\nsys.path = [\'/tmp/tmpil43iv1h/setuptools-49.2.1-py3-none-any.whl\', \'/tmp/tmpil43iv1h/pip-20.2.3-py2.py3-none-any.whl\'] + sys.path\nsys.argv[1:] = [\'install\', \'--no-cache-dir\', \'--no-index\', \'--find-links\', \'/tmp/tmpil43iv1h\', \'--root\', \'/\', \'--upgrade\', \'setuptools\', \'pip\']\nrunpy.run_module("pip", run_name="__main__", alter_sys=True)\n']' returned non-zero exit status 1.
Makefile:1186: recipe for target 'install' failed
make: *** [install] Error 1
파이썬 설치 과정에서 ensurepip 모듈이 pip와 setuptools를 설치하려 할 때 오류가 발생.
--root 옵션이 /로 설정되어 있는데, 이는 시스템 루트 디렉토리에 패키지를 설치하려 했기 때문에 권한 문제가 발생한 것 같다고 한다. (클로드 왈)
# 홈 디렉토리 아래에서 python3.8 파일을 찾아주는 명령어
find $HOME -name "python3.8"
위 명령어를 입력하면 python3.8 경로가 여러개 나온다. 그 중에서 ~/python/bin/python3.8 으로 끝나는 경로가 파이썬 실행 파일 경로다.
/home/user/python/bin/python3.8 get-pip.py
하지만 저 과정에서 또 오류가 발생하였고 오류를 해결하지 못해서 pip을 소스에서 직접 설치하는 방법을 사용했다.
wget https://files.pythonhosted.org/packages/py3/p/pip/pip-22.0.4-py3-none-any.whl
/home/user/python/bin/python3.8 pip-22.0.4-py3-none-any.whl/pip install --no-index --find-links=pip-22.0.4-py3-none-any.whl pip
/home/user/python/bin/pip3.8 --version
드디어 설치가 완료되었다!
이제 남은 절차를 해주면 된다.
가상환경 생성
/home/user/python/bin/python3.8 -m venv myenv
가상환경 활성화
source myenv/bin/activate
pip install pandas==1.2.4 pymysql==1.0.2 datetime sqlalchemy==1.4.15
설치 성공한줄 알고 파이썬 파일을 실행시키니 또 pip 오류가 발생했다.
ERROR: No matching distribution found for pandas==1.2.4
WARNING: pip is configured with locations that require TLS/SSL, however the ssl module in Python is not available.
Could not fetch URL https://pypi.org/simple/pip/: There was a problem confirming the ssl certificate: HTTPSConnectionPool(host='pypi.org', port=443): Max retries exceeded with url: /simple/pip/ (Caused by SSLError("Can't connect to HTTPS URL because the SSL module is not available.")) - skipping
SSL 모듈이 제대로 설치되지 않은 것 같다.
deactivate
cd ~/python-source/Python-3.8.8
make clean
sudo apt-get install libssl-dev
./configure --prefix=$HOME/python
# (클로드는 ./configure --prefix=$HOME/python --with-openssl 입력하라고 했는데 make 명령어에서 에러 뜸)
make
make install
/home/user/python/bin/python3.8 -m venv myenv
source myenv/bin/activate
pip install pandas==1.2.4 ast re pymysql==1.0.2 datetime sqlalchemy==1.4.15
8단계에서
(myenv) (base) user:~/python-source/Python-3.8.8$ pip install pandas==1.2.4 ast re pymysql==1.0.2 datetime sqlalchemy==1.4.15
Collecting pandas==1.2.4
Downloading pandas-1.2.4-cp38-cp38-manylinux1_x86_64.whl (9.7 MB)
|████████████████████████████████| 9.7 MB 1.1 MB/s
Collecting ast
Downloading AST-0.0.2.tar.gz (19 kB)
ERROR: Command errored out with exit status 1:
command: /home/user/python-source/Python-3.8.8/myenv/bin/python3.8 -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'/tmp/pip-install-ymebp3ni/ast/setup.py'"'"'; __file__='"'"'/tmp/pip-install-ymebp3ni/ast/setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' egg_info --egg-base /tmp/pip-pip-egg-info-unbucchd
cwd: /tmp/pip-install-ymebp3ni/ast/
Complete output (11 lines):
Traceback (most recent call last):
File "<string>", line 1, in <module>
File "/home/user/python-source/Python-3.8.8/myenv/lib/python3.8/site-packages/setuptools/__init__.py", line 23, in <module>
from setuptools.dist import Distribution
File "/home/user/python-source/Python-3.8.8/myenv/lib/python3.8/site-packages/setuptools/dist.py", line 34, in <module>
from setuptools import windows_support
File "/home/user/python-source/Python-3.8.8/myenv/lib/python3.8/site-packages/setuptools/windows_support.py", line 2, in <module>
import ctypes
File "/home/user/python/lib/python3.8/ctypes/__init__.py", line 7, in <module>v
from _ctypes import Union, Structure, Array
ModuleNotFoundError: No module named '_ctypes'
----------------------------------------
ERROR: Command errored out with exit status 1: python setup.py egg_info Check the logs for full command output.
WARNING: You are using pip version 20.2.3; however, version 24.0 is available.
You should consider upgrading via the '/home/user/python-source/Python-3.8.8/myenv/bin/python3.8 -m pip install --upgrade pip' command.
에러 원인: ctypes 모듈이 없음. 파이썬 표준 라이브러리의 일부이지만 컴파일할 때 필요한 일부 종속성이 설치되지 않은듯
deactivate
cd ~/python-source/Python-3.8.8
make clean
sudo apt-get install libffi-dev
cd ~로 이동해서
./configure --prefix=$HOME/python
make
make install
/home/user/python/bin/python3.8 -m venv myenv
source myenv/bin/activate
pip install pandas==1.2.4 pymysql==1.0.2 datetime sqlalchemy==1.4.15
우여곡절 여기까지 성공했다.
가상환경에서 파이썬 파일을 실행시키니 오류가 발생했다.
import pandas as pd 줄에서
ModuleNotFoundError: No module named '_bz2'
에러 발생
내가 해결 방법은 다음과 같다.
sudo apt-get install libbz2-dev
wget https://www.python.org/ftp/python/3.8.8/Python-3.8.8.tgz
tar xvfz Python-3.8.8.tgz
cd Python-3.8.8
./configure (또는
./configure --prefix=$VIRTUAL_ENV/python 또는
./configure --prefix=$HOME/myenv 어떤 차이점이 있는지는..)
make
sudo make install
python3 -V
source myenv/bin/activate
사실 이 과정이 바로 순탄하게 진행되진 않았고,
2. Python 소스 코드 다운로드 과정부터 많이 반복했다.
다시 소스코드 다운 받고 압축 해제하고 디렉토리 이동하고 컴파일하고 다시 cd ~으로 이동해서 가상환경 액티브시키고 파일 실행하니 pandas, pymysql, sqlalchemy그 다 없어서 다시 pip install pandas==1.2.4 같이 하나하나 다 설치했더니 결국 실행에 성공했다.