いろいろやってみるにっき

てきとーに生きている奴の日記

https化に伴い、表示できなくなっているリンクについて修復中。
2018年から遡って修正し、2015年分まで修正完了。


弊社CTOがお勧めする機械学習用Python環境 2

前回はCTOが作成した顧客向け資料の一部を書いた。今回は実際にPython環境を作ってみる。

 

 

Ubuntu18.04を準備

VMware Workstation PlayerにUbuntu18.04をインストールして、別件で検証が必要だったGradle最新版をインストールした。Javaの環境なのに途中Pythonのインストールも行われていた。

shigeo@ubuntu:~$ gradle -v

Welcome to Gradle 7.0!

Here are the highlights of this release:
 - File system watching enabled by default
 - Support for running with and building Java 16 projects
 - Native support for Apple Silicon processors
 - Dependency catalog feature preview

For more details see https://docs.gradle.org/7.0/release-notes.html


------------------------------------------------------------
Gradle 7.0
------------------------------------------------------------

Build time:   2021-04-09 22:27:31 UTC
Revision:     d5661e3f0e07a8caff705f1badf79fb5df8022c4

Kotlin:       1.4.31
Groovy:       3.0.7
Ant:          Apache Ant(TM) version 1.10.9 compiled on September 27 2020
JVM:          11.0.11 (Ubuntu 11.0.11+9-Ubuntu-0ubuntu2.18.04)
OS:           Linux 4.15.0-32-generic amd64

 

GradleはJavaのビルド環境なのに途中Pythonのインストールも行われていた。そこでPythonのバージョンを調べてみる。

shigeo@ubuntu:~$ python3 --version
Python 3.6.9
shigeo@ubuntu:~$ python2 --version

Command 'python2' not found, but can be installed with:

sudo apt install python-minimal

shigeo@ubuntu:~$ python --version

Command 'python' not found, but can be installed with:

sudo apt install python3       
sudo apt install python        
sudo apt install python-minimal

You also have python3 installed, you can run 'python3' instead.

python3コマンドではバージョン表示、python2、pythonコマンドではインストールしろよメッセージである。Python2系は使わないからいいんだけど、一応入っていないことは確認できた。

 

Python、pipenv、pyenvのインストール

今回はここまでを一気にインストールする。順番としてはpyenv→Python→pipenvである。手順は前回も示したように下記のエントリを活用。

qiita.com

 

gitのインストールとpyenvのクローン

Python3は最新ではないがインストール済を確認できている。gitはまだだったのでgitを入れてpyenvをクローンする。

shigeo@ubuntu:~$ sudo apt install git
[sudo] shigeo のパスワード: 
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています                
状態情報を読み取っています... 完了
以下の追加パッケージがインストールされます:
  git-man liberror-perl
提案パッケージ:
  git-daemon-run | git-daemon-sysvinit git-doc git-el git-email git-gui gitk
  gitweb git-cvs git-mediawiki git-svn
以下のパッケージが新たにインストールされます:
  git git-man liberror-perl
アップグレード: 0 個、新規インストール: 3 個、削除: 0 個、保留: 17 個。
4,743 kB のアーカイブを取得する必要があります。
この操作後に追加で 34.0 MB のディスク容量が消費されます。
続行しますか? [Y/n] y
取得:1 http://us.archive.ubuntu.com/ubuntu bionic/main amd64 liberror-perl all 0.17025-1 [22.8 kB]
取得:2 http://us.archive.ubuntu.com/ubuntu bionic-updates/main amd64 git-man all 1:2.17.1-1ubuntu0.8 [804 kB]
取得:3 http://us.archive.ubuntu.com/ubuntu bionic-updates/main amd64 git amd64 1:2.17.1-1ubuntu0.8 [3,916 kB]
4,743 kB を 3秒 で取得しました (1,474 kB/s)
以前に未選択のパッケージ liberror-perl を選択しています。
(データベースを読み込んでいます ... 現在 167009 個のファイルとディレクトリがインストールされています。)
.../liberror-perl_0.17025-1_all.deb を展開する準備をしています ...
liberror-perl (0.17025-1) を展開しています...
以前に未選択のパッケージ git-man を選択しています。
.../git-man_1%3a2.17.1-1ubuntu0.8_all.deb を展開する準備をしています ...
git-man (1:2.17.1-1ubuntu0.8) を展開しています...
以前に未選択のパッケージ git を選択しています。
.../git_1%3a2.17.1-1ubuntu0.8_amd64.deb を展開する準備をしています ...
git (1:2.17.1-1ubuntu0.8) を展開しています...
git-man (1:2.17.1-1ubuntu0.8) を設定しています ...
liberror-perl (0.17025-1) を設定しています ...
git (1:2.17.1-1ubuntu0.8) を設定しています ...
man-db (2.8.3-2ubuntu0.1) のトリガを処理しています ...
shigeo@ubuntu:~$ git clone https://github.com/pyenv/pyenv.git ~/.pyenv
Cloning into '/home/shigeo/.pyenv'...
remote: Enumerating objects: 19392, done.
remote: Counting objects: 100% (316/316), done.
remote: Compressing objects: 100% (171/171), done.
remote: Total 19392 (delta 156), reused 229 (delta 109), pack-reused 19076
Receiving objects: 100% (19392/19392), 3.94 MiB | 902.00 KiB/s, done.
Resolving deltas: 100% (13083/13083), done.

 

pyenvを環境変数に設定

shigeo@ubuntu:~$ echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bashrc
shigeo@ubuntu:~$ echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bashrc
shigeo@ubuntu:~$ echo -e 'if command -v pyenv 1>/dev/null 2>&1; then\n eval "$(pyenv init -)"\nfi' >> ~/.bashrc
shigeo@ubuntu:~$ exec "$SHELL"

pyenvのバージョンを表示してみる。

shigeo@ubuntu:~$ pyenv --version
pyenv 1.2.27-12-g328fd42c

 

Python3をの最新バージョンをインストール

上記のエントリではPython3.8をインストールしているが、最新版をインストールしてみることにした。

Pythonのビルドに必要なパッケージをインストール
shigeo@ubuntu:~$ python3 --version
Python 3.6.9
shigeo@ubuntu:~$ sudo apt-get update; sudo apt-get install --no-install-recommends make build-essential libssl-dev zlib1g-dev libbz2-dev libreadline-dev libsqlite3-dev wget curl llvm libncurses5-dev xz-utils tk-dev libxml2-dev libxmlsec1-dev libffi-dev liblzma-dev
ヒット:1 http://archive.ubuntulinux.jp/ubuntu bionic InRelease
ヒット:2 http://archive.ubuntulinux.jp/ubuntu-ja-non-free bionic InRelease     
ヒット:3 http://packages.microsoft.com/repos/code stable InRelease             
ヒット:4 http://us.archive.ubuntu.com/ubuntu bionic InRelease                  
取得:5 http://us.archive.ubuntu.com/ubuntu bionic-updates InRelease [88.7 kB]  
ヒット:6 http://ppa.launchpad.net/cwchien/gradle/ubuntu bionic InRelease       
取得:7 http://security.ubuntu.com/ubuntu bionic-security InRelease [88.7 kB]   
取得:8 http://us.archive.ubuntu.com/ubuntu bionic-backports InRelease [74.6 kB]
取得:9 http://us.archive.ubuntu.com/ubuntu bionic-updates/main amd64 DEP-11 Metadata [294 kB]
取得:10 http://us.archive.ubuntu.com/ubuntu bionic-updates/universe amd64 DEP-11 Metadata [289 kB]
取得:11 http://security.ubuntu.com/ubuntu bionic-security/main amd64 DEP-11 Metadata [48.5 kB]
取得:12 http://us.archive.ubuntu.com/ubuntu bionic-updates/universe DEP-11 48x48 Icons [217 kB]
取得:13 http://us.archive.ubuntu.com/ubuntu bionic-updates/multiverse amd64 DEP-11 Metadata [2,468 B]
取得:14 http://us.archive.ubuntu.com/ubuntu bionic-backports/universe amd64 DEP-11 Metadata [9,292 B]
取得:15 http://security.ubuntu.com/ubuntu bionic-security/universe amd64 DEP-11 Metadata [60.3 kB]
取得:16 http://security.ubuntu.com/ubuntu bionic-security/multiverse amd64 DEP-11 Metadata [2,464 B]
1,175 kB を 4秒 で取得しました (273 kB/s)                                 
パッケージリストを読み込んでいます... 完了
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています                
状態情報を読み取っています... 完了
xz-utils はすでに最新バージョン (5.2.2-1.3) です。
wget はすでに最新バージョン (1.19.4-1ubuntu2.2) です。
以下の追加パッケージがインストールされます:
  binfmt-support dpkg-dev g++ g++-7 gcc gcc-7 gir1.2-harfbuzz-0.0 icu-devtools
  libasan4 libatomic1 libc-dev-bin libc6-dev libcilkrts5 libcurl4
  libexpat1-dev libfontconfig1-dev libfreetype6-dev libgcc-7-dev
  libgcrypt20-dev libglib2.0-dev libglib2.0-dev-bin libgmp-dev libgmpxx4ldbl
  libgnutls-dane0 libgnutls-openssl27 libgnutls28-dev libgnutlsxx28
  libgpg-error-dev libgraphite2-dev libharfbuzz-dev libharfbuzz-gobject0
  libice-dev libicu-dev libicu-le-hb-dev libicu-le-hb0 libiculx60
  libidn2-0-dev libidn2-dev libitm1 libjsoncpp1 liblsan0 libmpx2 libnspr4-dev
  libnss3-dev libp11-kit-dev libpcre16-3 libpcre3-dev libpcre32-3
  libpcrecpp0v5 libpng-dev libpthread-stubs0-dev libquadmath0 libsm-dev
  libstdc++-7-dev libtasn1-6-dev libtcl8.6 libtinfo-dev libtk8.6 libtsan0
  libubsan0 libunbound2 libx11-dev libxau-dev libxcb1-dev libxdmcp-dev
  libxext-dev libxft-dev libxmlsec1-gcrypt libxmlsec1-gnutls libxrender-dev
  libxslt1-dev libxss-dev libxt-dev linux-libc-dev llvm-6.0 llvm-6.0-runtime
  llvm-runtime nettle-dev pkg-config python3-distutils python3-lib2to3 tcl
  tcl-dev tcl8.6 tcl8.6-dev tk tk8.6 tk8.6-dev x11proto-core-dev x11proto-dev
  x11proto-scrnsaver-dev x11proto-xext-dev xorg-sgml-doctools xtrans-dev
提案パッケージ:
  debian-keyring g++-multilib g++-7-multilib gcc-7-doc libstdc++6-7-dbg
  gcc-multilib manpages-dev autoconf automake libtool flex bison gcc-doc
  gcc-7-multilib gcc-7-locales libgcc1-dbg libgomp1-dbg libitm1-dbg
  libatomic1-dbg libasan4-dbg liblsan0-dbg libtsan0-dbg libubsan0-dbg
  libcilkrts5-dbg libmpx2-dbg libquadmath0-dbg glibc-doc libgcrypt20-doc
  libglib2.0-doc gmp-doc libgmp10-doc libmpfr-dev gnutls-doc gnutls-bin
  libgraphite2-utils libice-doc icu-doc liblzma-doc ncurses-doc readline-doc
  libsm-doc sqlite3-doc libssl-doc libstdc++-7-doc libxcb-doc libxext-doc
  libxt-doc llvm-6.0-doc make-doc tcl-doc tcl-tclreadline tcl8.6-doc tk-doc
  tk8.6-doc
推奨パッケージ:
  fakeroot libalgorithm-merge-perl bzip2-doc manpages-dev libpng-tools
  libtasn1-doc libx11-doc llvm-6.0-dev
以下のパッケージが新たにインストールされます:
  binfmt-support build-essential curl dpkg-dev g++ g++-7 gcc gcc-7
  gir1.2-harfbuzz-0.0 icu-devtools libasan4 libatomic1 libbz2-dev libc-dev-bin
  libc6-dev libcilkrts5 libcurl4 libexpat1-dev libffi-dev libfontconfig1-dev
  libfreetype6-dev libgcc-7-dev libgcrypt20-dev libglib2.0-dev
  libglib2.0-dev-bin libgmp-dev libgmpxx4ldbl libgnutls-dane0
  libgnutls-openssl27 libgnutls28-dev libgnutlsxx28 libgpg-error-dev
  libgraphite2-dev libharfbuzz-dev libharfbuzz-gobject0 libice-dev libicu-dev
  libicu-le-hb-dev libicu-le-hb0 libiculx60 libidn2-0-dev libidn2-dev libitm1
  libjsoncpp1 liblsan0 liblzma-dev libmpx2 libncurses5-dev libnspr4-dev
  libnss3-dev libp11-kit-dev libpcre16-3 libpcre3-dev libpcre32-3
  libpcrecpp0v5 libpng-dev libpthread-stubs0-dev libquadmath0 libreadline-dev
  libsm-dev libsqlite3-dev libssl-dev libstdc++-7-dev libtasn1-6-dev libtcl8.6
  libtinfo-dev libtk8.6 libtsan0 libubsan0 libunbound2 libx11-dev libxau-dev
  libxcb1-dev libxdmcp-dev libxext-dev libxft-dev libxml2-dev libxmlsec1-dev
  libxmlsec1-gcrypt libxmlsec1-gnutls libxrender-dev libxslt1-dev libxss-dev
  libxt-dev linux-libc-dev llvm llvm-6.0 llvm-6.0-runtime llvm-runtime make
  nettle-dev pkg-config python3-distutils python3-lib2to3 tcl tcl-dev tcl8.6
  tcl8.6-dev tk tk-dev tk8.6 tk8.6-dev x11proto-core-dev x11proto-dev
  x11proto-scrnsaver-dev x11proto-xext-dev xorg-sgml-doctools xtrans-dev
  zlib1g-dev
アップグレード: 0 個、新規インストール: 109 個、削除: 0 個、保留: 17 個。
63.0 MB のアーカイブを取得する必要があります。
この操作後に追加で 269 MB のディスク容量が消費されます。
続行しますか? [Y/n] y
取得:1 http://us.archive.ubuntu.com/ubuntu bionic/main amd64 binfmt-support amd64 2.1.8-2 [51.6 kB]

以下省略

 

Python3.9.5をインストール

Pythonの最新バージョンをWelcome to Python.orgで調べる。

www.python.org

f:id:shigeo-t:20210511110539p:plain

3.9.5である。pyenvコマンドに与えるのは3.9.5ということになる。

shigeo@ubuntu:~$ pyenv install 3.9.5
Downloading Python-3.9.5.tar.xz...
-> https://www.python.org/ftp/python/3.9.5/Python-3.9.5.tar.xz
Installing Python-3.9.5...
Installed Python-3.9.5 to /home/shigeo/.pyenv/versions/3.9.5

 

バージョンの確認

バージョンを確認してみる。

shigeo@ubuntu:~$ python --version
pyenv: python: command not found

The `python' command exists in these Python versions:
  3.9.5

Note: See 'pyenv help global' for tips on allowing both
      python2 and python3 to be found.
shigeo@ubuntu:~$ pyenv versions
* system (set by /home/shigeo/.pyenv/version)
  3.9.5

確かに3.9.5が入っている。

 

ローカルで使用するPythonを指定

手順通りにやってみる。

shigeo@ubuntu:~$ mkdir -p ~/sample/py39
shigeo@ubuntu:~$ cd sample/py39/
shigeo@ubuntu:~/sample/py39$ pyenv local 3.9.5
shigeo@ubuntu:~/sample/py39$ python --version
Python 3.9.5

先ほどのようにエラーメッセージは無く、バージョン3.9.5が表示された。

 

pipenvインストール

pipコマンドでインストールする。

shigeo@ubuntu:~/sample/py39$ pip --version
pip 21.1.1 from /home/shigeo/.pyenv/versions/3.9.5/lib/python3.9/site-packages/pip (python 3.9)
shigeo@ubuntu:~/sample/py39$ pip install pipenv
Collecting pipenv
  Downloading pipenv-2020.11.15-py2.py3-none-any.whl (3.9 MB)
     |████████████████████████████████| 3.9 MB 1.8 MB/s 
Collecting virtualenv-clone>=0.2.5
  Downloading virtualenv_clone-0.5.4-py2.py3-none-any.whl (6.6 kB)
Requirement already satisfied: pip>=18.0 in /home/shigeo/.pyenv/versions/3.9.5/lib/python3.9/site-packages (from pipenv) (21.1.1)
Requirement already satisfied: setuptools>=36.2.1 in /home/shigeo/.pyenv/versions/3.9.5/lib/python3.9/site-packages (from pipenv) (56.0.0)
Collecting virtualenv
  Downloading virtualenv-20.4.6-py2.py3-none-any.whl (7.2 MB)
     |████████████████████████████████| 7.2 MB 6.6 MB/s 
Collecting certifi
  Downloading certifi-2020.12.5-py2.py3-none-any.whl (147 kB)
     |████████████████████████████████| 147 kB 4.7 MB/s 
Collecting filelock<4,>=3.0.0
  Downloading filelock-3.0.12-py3-none-any.whl (7.6 kB)
Collecting appdirs<2,>=1.4.3
  Downloading appdirs-1.4.4-py2.py3-none-any.whl (9.6 kB)
Collecting six<2,>=1.9.0
  Downloading six-1.16.0-py2.py3-none-any.whl (11 kB)
Collecting distlib<1,>=0.3.1
  Downloading distlib-0.3.1-py2.py3-none-any.whl (335 kB)
     |████████████████████████████████| 335 kB 9.8 MB/s 
Installing collected packages: six, filelock, distlib, appdirs, virtualenv-clone, virtualenv, certifi, pipenv
Successfully installed appdirs-1.4.4 certifi-2020.12.5 distlib-0.3.1 filelock-3.0.12 pipenv-2020.11.15 six-1.16.0 virtualenv-20.4.6 virtualenv-clone-0.5.4

 

pipenvプロジェクトの作成

pipenvのバージョンを確認したあと、参照エントリ通りに実行。

shigeo@ubuntu:~/sample/py39$ pipenv --version
pipenv, version 2020.11.15
shigeo@ubuntu:~/sample/py39$ 
shigeo@ubuntu:~/sample/py39$ 
shigeo@ubuntu:~/sample/py39$ mkdir pipenvdemo
shigeo@ubuntu:~/sample/py39$ cd pipenvdemo/
shigeo@ubuntu:~/sample/py39/pipenvdemo$ export PIPENV_VENV_IN_PROJECT=true
shigeo@ubuntu:~/sample/py39/pipenvdemo$ 
shigeo@ubuntu:~/sample/py39/pipenvdemo$ pipenv --python 3
Creating a virtualenv for this project...
Pipfile: /home/shigeo/sample/py39/pipenvdemo/Pipfile
Using /home/shigeo/.pyenv/versions/3.9.5/bin/python3.9 (3.9.5) to create virtualenv...
⠼ Creating virtual environment...created virtual environment CPython3.9.5.final.0-64 in 856ms
  creator CPython3Posix(dest=/home/shigeo/sample/py39/pipenvdemo/.venv, clear=False, no_vcs_ignore=False, global=False)
  seeder FromAppData(download=False, pip=bundle, setuptools=bundle, wheel=bundle, via=copy, app_data_dir=/home/shigeo/.local/share/virtualenv)
    added seed packages: pip==21.1.1, setuptools==56.0.0, wheel==0.36.2
  activators BashActivator,CShellActivator,FishActivator,PowerShellActivator,PythonActivator,XonshActivator

✔ Successfully created virtual environment! 
Virtualenv location: /home/shigeo/sample/py39/pipenvdemo/.venv
Creating a Pipfile for this project...

 

今回はここまで。

入門 Python 3

入門 Python 3

  • 作者:Bill Lubanovic
  • 発売日: 2015/12/01
  • メディア: 単行本(ソフトカバー)
 
実践 Python 3

実践 Python 3

  • 作者:Mark Summerfield
  • 発売日: 2015/12/01
  • メディア: 単行本(ソフトカバー)