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

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

古いエントリのサムネイル画像がリンク切れになってたりするけど、チマチマ修正中


弊社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
  • メディア: 単行本(ソフトカバー)
 
お時間あったら、他のエントリもクリックして頂ければ幸いです。