Python3をローカル環境にインストール

Python3.6 インストール

コピペ用

# install python3.6
mkdir -p ~/src
 
cd ~/src
wget https://www.python.org/ftp/python/3.6.0/Python-3.6.0.tgz
tar xvzf Python-3.6.0.tgz
cd Python-3.6.0
./configure --prefix=/usr/local/
make && make altinstall

# check python3.6
cd /usr/local/bin/
./python3.6 --version
./pip3.6 --version
./python3.6 -c 'import sqlite3'
# No module named '_sqlite3'

# make symlink
# ln -s /usr/local/bin/python3.6 /usr/bin/python3.6
# ln -s /usr/local/bin/pip3.6 /usr/bin/pip3.6

# install sqlite3.27
cd ~/src/
wget https://www.sqlite.org/2019/sqlite-autoconf-3270100.tar.gz --no-check-certificate
tar xvzf sqlite-autoconf-3270100.tar.gz
cd sqlite-autoconf-3270100
./configure --prefix=/usr/local/
make && make install

# check sqlite3.27
/usr/local/bin/sqlite3 --version

# make symlink
ls /usr/bin/sqlite3 1>/dev/null 2>&1 && mv /usr/bin/sqlite3 /usr/bin/sqlite3_old
ln -s /usr/local/bin/sqlite3 /usr/bin/sqlite3

# recompile python3.6
cd ~/src/Python-3.6.0/
LD_RUN_PATH=/usr/local/lib ./configure --prefix=/usr/local/ --enable-optimizations
LD_RUN_PATH=/usr/local/lib make altinstall

# check python3.6
cd /usr/local/bin/
./python3.6 --version
./pip3.6 --version
./python3.6 -c 'import sqlite3'

# upgrade python3.6
./pip3.6 install --upgrade pip

 

必要パッケージ インストール

ビルド, pip, sqlite3, pandas
さまざまな理由で色々なパッケージが必要になる
パッケージが必要な理由は、下記ハマりポイントを参照

# For Ubuntu:
#apt install gcc make build-essential zlib1g-dev libssl-dev libsqlite3-dev libbz2-dev liblzma-dev

# For CentOS:
#yum install gcc make zlib-devel openssl-devel sqlite sqlite-devel bzip2-devel xz-devel

 

Python-3.6.0 インストール

/usr/local/ 以下にpython3.6.0を入れると、
/usr/local/bin/python3.6
/usr/local/bin/pip3.6 のように展開される
 
/usr/bin/ にシンボリックリンクを作成し、PATHを通しておくようにすれば、
既存のPython2系, Python3系の他のものが入っていても、競合せずにすむ
 
–prefix=/usr/local/でインストール先を指定すると、
/usr/local/ 内の {bin,include,lib,share} に展開される
~/src/Python-3.6.0/configure –help で指定方法を確認できる
 
下記リンクから、ダウンロードしたいバージョンのURLをコピー
https://www.python.org/ftp/python/

mkdir -p ~/src

cd ~/src
wget https://www.python.org/ftp/python/3.6.0/Python-3.6.0.tgz
tar xvzf Python-3.6.0.tgz
cd Python-3.6.0
./configure --prefix=/usr/local/
make && make altinstall

cd /usr/local/bin/
./python3.6 --version
./pip3.6 --version
./python3.6 -c 'import sqlite3'
./pip3.6 install --upgrade pip

ln -s /usr/local/bin/python3.6 /usr/bin/python3.6
ln -s /usr/local/bin/pip3.6 /usr/bin/pip3.6

 

ハマりポイント

最小構成にしようとして怒られた

→ビルド時に必要なパッケージが不足している
configure: error: in `~/src/Python-3.6.0':
configure: error: no acceptable C compiler found in $PATH

# For Ubuntu:
apt install gcc make build-essential

# For CentOS:
yum install gcc make 

 

ssl関連でハマる

pip is configured with locations that require TLS/SSL, however the ssl module in Python is not available.
→SSL関連のパッケージをいれる

# For Ubuntu:
apt install libssl-dev

# For CentOS:
yum install openssl-devel

参考: pip-error-while-installing-python-ignoring-ensurepip-failure-pip-8-1-1-requir

 

ZipImportError

zipimport.ZipImportError: can't decompress data; zlib not available
→zlibをいれる
zlib は gzip と PKZIP で使われている
deflate 圧縮法を実装したライブラリらしい
Makefile:1064: recipe for target ‘install’ failed

# For Ubuntu:
apt install zlib1g-dev

# For CentOS:
yum install zlib-devel

 

SQLite3 が入っていないと言われた

No module named '_sqlite3'
→sqlite3関連のパッケージを入れる
sqlite3 はpythonに標準で入っているはずのモジュールだが、
ビルド時にコンパイルできなくて、ImportErrorになる。

# For Ubuntu:
apt install libsqlite3-dev

# For CentOS:
yum install sqlite-devel

「新しいSQLite3を使いたい!」等の理由で、
SQLite3をローカルインストールした場合、
Pythonビルド時に明示的に指定する必要がある

ローカルインストールの手順は、下記にまとめた
SQLite3をローカル環境にインストール

 

pandasがインストールできなかった

ModuleNotFoundError: No module named '_bz2'
→pandasで必要なパッケージを入れる

# For ubuntu:
apt install -y libbz2-dev liblzma-dev

For centos:
yum install bzip2-devel xz-devel

 

apt install できない

E: Could not get lock /var/lib/dpkg/lock - open (11: Resource temporarily unavailable)
E: Unable to lock the administration directory (/var/lib/dpkg/), is another process using it?
→lock解除する
他のプロセスがaptを使用しているため(VM作成直後によくみる)
大体、コレでlock解除できる

sudo apt install libssl-dev
E: Could not get lock /var/lib/dpkg/lock - open (11: Resource temporarily unavailable)
E: Unable to lock the administration directory (/var/lib/dpkg/), is another process using it?
# maskして、ロックを解除
sudo systemctl mask apt-daily.service
sudo systemctl mask apt-daily.timer
sudo systemctl mask apt-daily-upgrade.service
sudo systemctl mask apt-daily-upgrade.timer

コメント

タイトルとURLをコピーしました