pyenv-installerでpyenvを導入し、新旧Pythonを使う(2020/04/20追記)
Ubuntu18.04のVirtualBox5.2でPyenvをDebian10に入れて自作Pythonスクリプトの検証をした直後に、その仮想マシンが立ち上がらなくなってしまい、再度やるには正直面倒くさいなぁと思っていたところ、
GitHubのpyenv-installerというものがあることを知りました(←ここの方法自体は古いです)。
できるだけ幅広いバージョンのPython3を入れようと思うと、Python3.4以前をインストールするにはlibssl1.0-devが必要で、Python3.7(以降?)には新しい版が必要のようなので、これらが両方ともパッケージマネージャに登録されていて簡単にaptインストールできるDebian9.12(またはUbuntu16.04)で環境を作ることにしました。
結果として、前回とは打って変わって簡単にできました。
上記のようにOSバージョンを選ぶこと、また、PythonのSSLライブラリに古いものを入れたり外したりする必要があることから、仮想マシンか開発用のマシンを立ててやるのがいいと思います。
python --version
=> 2.7.13
python3 --version
=> 3.5.3
<< remove CD from install media >>
sudo vi /etc/apt/sources.list
---ここからインストール作業---
sudo apt install curl git
curl https://pyenv.run | bash
echo 'export PATH="$HOME/.pyenv/bin:$PATH"' >> ~/.bashrc
echo 'eval "$(pyenv init -)"' >> ~/.bashrc
echo 'eval "$(pyenv virtualenv-init -)"' >> ~/.bashrc
source ~/.bashrc
pyenv -v
=> pyenv 1.2.18
<< confirm the default version of libssl-dev >>
apt-cache policy libssl-dev
=> 1.1.0l-1
sudo apt install -y make libssl1.0-dev python3-pip build-essential zlib1g-dev libbz2-dev libreadline-dev libsqlite3-dev wget llvm libncurses5-dev libncursesw5-dev xz-utils python3-venv
---これでインストールは完了---
ひとつだけハンドで動作確認しておきます。ちなみに、今回のインストール方法では、ユーザーフォルダに各バージョンのPythonがインストールされるため、pyenv install等にsudo権限が要りません。
time pyenv install 3.4.2
pyenv virtualenv 3.4.2 dev3402
python --version
=> 2.7.13
python3 --version
=> 3.5.3
pyenv local dev3402
python --version
=> 3.4.2
python3 --version
=> 3.4.2
pyenv local system
python --version
=> 2.7.13
python3 --version
=> 3.5.3
私のPCではひとつのバージョンをインストールするのに10分ぐらい掛かるので、今回は
pyenv install --list | grep ' 3.' > py3.txt
のリストを加工して次のスクリプトを作って流しました。
(Python3.6以下)
…途中でdiskfullになりつつ、VMで良かったと気を取り直して…
(Python3.7以上)
sudo apt remove libssl1.0-dev
sudo apt install libssl-dev

以上のやり方でPython3マイナーバージョン最初と最後および気になるバージョンの、次のものをインストールしました:
3.0.1, 3.1.0, 3.1.5, 3.2.0, 3.2.6, 3.3.0, 3.3.7, 3.4.0, 3.4.2, 3.4.3, 3.4.10, 3.5.0, 3.5.2, 3.5.9, 3.6.0, 3.6.10, 3.7.0, 3.7.2, 3.7.7, 3.8.0, 3.8.2
これらのうち3.1.0と3.1.5は、virtualenvがエラーを出して、開発環境dev3100, dev3150が作れませんでした。
また、3.0.1は開発環境dev3001ができたように見えて、そのPython3はデフォルトの3.5.3のままでした。
そして3.2.0以上では「なろう一括取得から青空文庫形式」の改良版スクリプトが動きました。←4/20 12:20削除、確認不足でしたm(__)m
また、3.2.0 / 3.2.6では「なろう一括取得から青空文庫形式」の改良版スクリプトがCSSセレクタのエラーで動きませんでした。
そして3.3.0以上では無事に動きました。
最後によく使うコマンドをまとめておきます:
パドラッパ from MacBook Air (2017)
できるだけ幅広いバージョンのPython3を入れようと思うと、Python3.4以前をインストールするにはlibssl1.0-devが必要で、Python3.7(以降?)には新しい版が必要のようなので、これらが両方ともパッケージマネージャに登録されていて簡単にaptインストールできるDebian9.12(またはUbuntu16.04)で環境を作ることにしました。
結果として、前回とは打って変わって簡単にできました。
上記のようにOSバージョンを選ぶこと、また、PythonのSSLライブラリに古いものを入れたり外したりする必要があることから、仮想マシンか開発用のマシンを立ててやるのがいいと思います。
それでは、例によってセクション内に手順を記します
<< confirm original versions >>python --version
=> 2.7.13
python3 --version
=> 3.5.3
<< remove CD from install media >>
sudo vi /etc/apt/sources.list
---ここからインストール作業---
sudo apt install curl git
curl https://pyenv.run | bash
echo 'export PATH="$HOME/.pyenv/bin:$PATH"' >> ~/.bashrc
echo 'eval "$(pyenv init -)"' >> ~/.bashrc
echo 'eval "$(pyenv virtualenv-init -)"' >> ~/.bashrc
source ~/.bashrc
pyenv -v
=> pyenv 1.2.18
<< confirm the default version of libssl-dev >>
apt-cache policy libssl-dev
=> 1.1.0l-1
sudo apt install -y make libssl1.0-dev python3-pip build-essential zlib1g-dev libbz2-dev libreadline-dev libsqlite3-dev wget llvm libncurses5-dev libncursesw5-dev xz-utils python3-venv
---これでインストールは完了---
ひとつだけハンドで動作確認しておきます。ちなみに、今回のインストール方法では、ユーザーフォルダに各バージョンのPythonがインストールされるため、pyenv install等にsudo権限が要りません。
time pyenv install 3.4.2
pyenv virtualenv 3.4.2 dev3402
python --version
=> 2.7.13
python3 --version
=> 3.5.3
pyenv local dev3402
python --version
=> 3.4.2
python3 --version
=> 3.4.2
pyenv local system
python --version
=> 2.7.13
python3 --version
=> 3.5.3
私のPCではひとつのバージョンをインストールするのに10分ぐらい掛かるので、今回は
pyenv install --list | grep ' 3.' > py3.txt
のリストを加工して次のスクリプトを作って流しました。
(Python3.6以下)
…途中でdiskfullになりつつ、VMで良かったと気を取り直して…
(Python3.7以上)
sudo apt remove libssl1.0-dev
sudo apt install libssl-dev

以上のやり方でPython3マイナーバージョン最初と最後および気になるバージョンの、次のものをインストールしました:
3.0.1, 3.1.0, 3.1.5, 3.2.0, 3.2.6, 3.3.0, 3.3.7, 3.4.0, 3.4.2, 3.4.3, 3.4.10, 3.5.0, 3.5.2, 3.5.9, 3.6.0, 3.6.10, 3.7.0, 3.7.2, 3.7.7, 3.8.0, 3.8.2
これらのうち3.1.0と3.1.5は、virtualenvがエラーを出して、開発環境dev3100, dev3150が作れませんでした。
また、3.0.1は開発環境dev3001ができたように見えて、そのPython3はデフォルトの3.5.3のままでした。
また、3.2.0 / 3.2.6では「なろう一括取得から青空文庫形式」の改良版スクリプトがCSSセレクタのエラーで動きませんでした。
そして3.3.0以上では無事に動きました。
最後によく使うコマンドをまとめておきます:
| ヘルプ | pyenv --help |
|---|---|
| バージョン確認 | pyenv versions |
| 開発環境切換 | pyenv local dev3mnn |
| 開発環境を戻す | pyenv local system |
| 開発環境削除 | pyenv uninstall |
| パッケージ追加 | pip3 install パッケージ名 |
パドラッパ from MacBook Air (2017)
【2020/04/20記】
インストール後の容量は7.27GBでした。Swapがデフォルトで2GBあるので、diskfullが発生するのも当然です。
インストールするPythonの量にもよりますが、VirtualBoxのデフォルト8GBの倍ぐらい取っておくと安全だと思います。
ちなみにPython 3.0.1が89MB, Python 3.8.2が204MB消費します。
また、途中で容量拡張するときにGPartedを使うと起動に時間が掛かることがあるのは有名な不具合だそうで、例えばこのような方法で簡単に治ります。
自作スクリプトの動作確認結果を見間違えていました。Python3.2台までは動作せず、3.3以上でOKでした。
インストール後の容量は7.27GBでした。Swapがデフォルトで2GBあるので、diskfullが発生するのも当然です。
インストールするPythonの量にもよりますが、VirtualBoxのデフォルト8GBの倍ぐらい取っておくと安全だと思います。
ちなみにPython 3.0.1が89MB, Python 3.8.2が204MB消費します。
また、途中で容量拡張するときにGPartedを使うと起動に時間が掛かることがあるのは有名な不具合だそうで、例えばこのような方法で簡単に治ります。
自作スクリプトの動作確認結果を見間違えていました。Python3.2台までは動作せず、3.3以上でOKでした。
| 固定リンク | 0


コメント