前回は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である。手順は前回も示したように下記のエントリを活用。
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で調べる。
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...
今回はここまで。