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
コメント