- Pythonプログラミング環境構築についてどれを使えば良いか調べる
- pyenvをインストールする
- pyenvでPythonをインストールする
- pipで必要なPythonパッケージをインストール
- 自分用のPython専用フォルダ作成し、パーミッション設定しておく
- 簡単なPythonコードでHello World
- requirements.txtを使うとpipパッケージの一括アップデートが超楽
- ラズパイとパソコン間でファイルのコピーや移動を行う
- VSCodeの拡張機能をインストールして、インテリセンスが使えるようにする
- VSCode拡張機能のインストール先はどこ?
- まとめ
【目次】
03.pyenvでPythonをインストールする
では、pyenv で自分の使いたいpythonバージョンをインストールしていきます。
先ほど調べたように、2023/2月時点では3.10系が最適と決定したので、その最新版はPython 3.10.10でした。
それをpyenv install 3.10.10
コマンドでインストールするのですが、以下のサイトを参考にすると、
https://blog.amedama.jp/entry/pyenv-ubuntu
このようなコマンドを使うと便利だということがわかりました。
pyenv install -v 3.10.10 2>&1 | tee build.log
2>&1
というのは、標準出力とエラー出力をマージするという意味で、tee
コマンドは標準出力、つまりターミナルに出力表示するのと、ファイル出力の両方行うというコマンドです。
すると、/home/ユーザー名
フォルダにbuild.log
というファイルが作られ、そこにpyenvによるビルドのログが書き込まれます。
インストール終了したら、build.log
ファイルを開いてnecessary
というキーワードで検索をかけると、以下の様なメッセージが出ていました。
The necessary bits to build these optional modules were not found: _dbm _gdbm To find the necessary bits, look in setup.py in detect_modules() for the module's name.
(翻訳)
これらのオプション モジュールを構築するために必要なビットが見つかりませんでした:
_dbm _gdbm
必要なビットを見つけるには、detect_modules() の setup.py でモジュールの名前を調べます。
ただ、setup.py
ファイルを探しても、_dbm
や_gdbm
のモジュール名はわかりませんでした。
また、ネット検索してもいまいちよくわかりませんでした。
そこで、Chat GPTに聞いてみました。
(図03-01)
改めてChat GPT ってスゴイっすね~。
ググるより早く解決しました。
ということで、_dbm
はlibgdbm-compat-dev
、_gdbm
はlibgdbm-dev
というモジュール名が判明しました。
合っているかどうか分かりませんが、Chat GPTを信用して再インストールしてみようと思います。
まず、先ほどインストールしたPython 3.10.10 を削除(アンインストール)します。
~$ pyenv uninstall -f 3.10.10 pyenv: 3.10.10 uninstalled
次に、先ほど検索したモジュールをインストールします。
sudo apt install libgdbm-compat-dev libgdbm-dev
念のため、ラズパイ再起動しておきます。
sodo reboot
再度、以下のコマンド、pyenvでPython 3.10.10 をインストールします。
pyenv install -v 3.10.10 2>&1 | tee build.log
これで再度、build.log
を開いて、necessary
というキーワードで検索してみると、見つかりませんでした。
その他、failed
や、error
というキーワードで検索しても、それらしきものは見当たらなかったので、多分インストール成功です。
これで、念のため再起動します。
sudo reboot
再起動し、SSHパスフレーズ入力して起動完了したら、以下のコマンドでPythonのバージョン確認します。
~$ python3 -V Python 3.10.6
まだシステムPythonのバージョン3.10.6のままですね。
ここで、pyenvによる以下のコマンドでバージョン変更してみます。
pyenv shell 3.10.10
そして、今度は以下のコマンドでPythonのバージョン確認します。
python -V Python 3.10.10
やった、バージョン変更できた!
因みに、GitHubのPython公式サイトに書いてあるように、pyenv shell
を使うと現在のシェルセッションのみ有効になります。
つまり、ターミナルを閉じたり、VSCodeを再起動したりすると使用できるPythonバージョンはシステムPythonのバージョンに戻ってしまいます。
ですから、VSCodeを起動したら、その都度pyenv shell
コマンドでバージョン指定しなければいけません。それは面倒ですね。
その他、pyenv local (バージョン)
の場合は、現在のディレクトリにいる時だけそのバージョンが有効になります。
また、pyenv global (バージョン)
の場合は、ユーザーアカウントに対してそのバージョンが有効になります。
ということで、VSCodeを開いた時、/home/ユーザー名
のフォルダ上でPythonプログラミング行うので、pyenv local (バージョン)
を使って反映させてみます。
pyenv local 3.10.10
その後、再起動します。
sudo reboot
そして、パスフレーズ入力して起動したら、以下のコマンドでPythonバージョンを確認します。
~$ python -V Python 3.10.10
やったぜー!
確実にバージョンが3.10.10 になった!
以前インストールした時は再起動する度にバージョンが元に戻ってしまっていたんですが、今回はバッチリうまくいきました。
やはり2回目のインストールは理解が早いですな。
04.pipで必要なPythonパッケージをインストール
pipとはPythonのパッケージを管理するツールだそうです。
インターネット上にあるライブラリ等のPythonパッケージを必要に応じてダウンロードおよびインストールしたり、削除したり、依存関係があるものを自動的にダウンロードしてくれたりするツールです。
最初、私はpipがあれば全ての標準的なパッケージを自動でインストールしてくれるものだと思っていました。
しかしそれは大きな勘違いでした。
pipはただ単にpipコマンドを使ってパッケージをインストールし、そのリストが記録されるものだったようです(多分…)。
先に紹介したように、pyenvでPythonをインストールすると、pipもインストールされます。
pipはUbuntuのapt同様、頻繁にアップデートして、最新版にしておく必要があります。
まず、pipコマンドを使った場合の依存関係を以下のコマンドで確かめます。
~$ pip -V pip 22.3.1 from /home/xxxxxx/.pyenv/versions/3.10.10/lib/python3.10/site-packages/pip (python 3.10)
バッチリ、先ほどpyenvでインストールしたPython 3.10.10 と紐づいているようです。
では、以下のコマンドで、pip が管理するパッケージ一覧を確認してみます。
pip list Package Version ---------- ------- pip 22.3.1 setuptools 65.5.0 [notice] A new release of pip available: 22.3.1 -> 23.0.1 [notice] To update, run: pip install --upgrade pip
この場合、pipのバージョンが22.3.1で、23.0.1にアップグレードできるそうなので、pipをアップグレードします。
python -m pip install --upgrade pip
その後、再度
~$ pip list Package Version ---------- ------- pip 23.0.1 setuptools 65.5.0
これでpipも最新版になりました。
今度はpip list
にオプション-o
又は--outdated
を付けると、最新版ではないパッケージのみを表示することができます。
~$ pip list -o Package Version Latest Type ---------- ------- ------ ----- setuptools 65.5.0 67.3.3 wheel
こうなると、setuptoolsもバージョンアップした方が良いらしい。
ならば、
python -m pip install --upgrade setuptools
これで再度
~$ pip list Package Version ---------- ------- pip 23.0.1 setuptools 67.3.3
これでsetuptoolsもアップデートされました。
因みに、pip とpip3 がありますが、pip3の依存関係も確認しておきます。
~$ pip3 -V pip 23.0.1 from /home/xxxxxx/.pyenv/versions/3.10.10/lib/python3.10/site-packages/pip (python 3.10)
これは先ほどのpipと同じなので、pyenvの場合はpipで良いみたいです。
ただ、これではpipに2つしかパッケージが入っていませんね。
ネット上の多くの最初のパッケージインストールにsomepackageとあるので、それもインストールしておきます。
~$ python -m pip install SomePackage Collecting SomePackage Downloading somepackage-1.2.3.tar.gz (8.6 kB) Preparing metadata (setup.py) ... done Installing collected packages: SomePackage DEPRECATION: SomePackage is being installed using the legacy 'setup.py install' method, because it does not have a 'pyproject.toml' and the 'wheel' package is not installed. pip 23.1 will enforce this behaviour change. A possible replacement is to enable the '--use-pep517' option. Discussion can be found at https://github.com/pypa/pip/issues/8559 Running setup.py install for SomePackage ... done Successfully installed SomePackage-1.2.3
(翻訳)
非推奨: SomePackage は、従来の「setup.py install」メソッドを使用してインストールされています。これは、「pyproject.toml」がなく、「wheel」パッケージがインストールされていないためです。 pip 23.1 では、この動作の変更が強制されます。 可能な代替手段は、’–use-pep517′ オプションを有効にすることです。 ディスカッションは https://github.com/pypa/pip/issues/8559 にあります。
どうやらwheel
パッケージがインストールされていないことが原因っぽいです。
ならば、一旦アンインストールします。
pip uninstall somepackage
次にwheel
パッケージをインストールします。
python -m pip install wheel
そして、
~$ python -m pip install SomePackage Collecting SomePackage Using cached somepackage-1.2.3.tar.gz (8.6 kB) Preparing metadata (setup.py) ... done Building wheels for collected packages: SomePackage Building wheel for SomePackage (setup.py) ... done (中略) Successfully built SomePackage Installing collected packages: SomePackage Successfully installed SomePackage-1.2.3
やった。
somepackageも成功しました。
ところで、ここで気付いたんですが、pipでインストールする際、一般的には
python -m pip install パッケージ名
ですが、pyenvでインストールすると、
pip install パッケージ名
で良いみたいですね。
また、Pythonプログラミングを続けていくと、pipでインストールすることが多々あると思います。
すると、複数のパッケージをアップグレードするのが面倒になってきます。
その場合はrequirements.txt
を使うのですが、それについては後で説明します。
05.自分用のPython専用フォルダ作成し、パーミッション設定しておく
まず、VSCodeのリモートエクスプローラーで、自分用にPythonプログラミング用の専用フォルダを新たに作成しておきます。
下図の様にクリックしていきます。
(図05-01)
ここではとりあえずmypy
としておきます。
(図05-02)
次に、ls -la
コマンドで今作成したmypy
ディレクトリのパーミッションを確認してみます。
~$ ls -la 合計 1128 drwxr-x--- 8 xxxxxx xxxxxx 4096 2月 22 23:20 . drwxr-xr-x 3 root root 4096 8月 9 2022 .. -rw------- 1 xxxxxx xxxxxx 6283 2月 22 23:33 .bash_history -rw-r--r-- 1 xxxxxx xxxxxx 220 1月 7 2022 .bash_logout --------(中略)----------------- drwxrwxr-x 2 xxxxxx xxxxxx 4096 2月 22 23:20 mypy
これから、mypyフォルダのパーミッションを自分だけ読み書き実行可能に変更しておきます。
~$ chmod 700 mypy
これで、改めてls -la
コマンドで確認すると、以下のようになりました。
~$ ls -la 合計 1128 --------(中略)----------------- drwx------ 2 xxxxxx xxxxxx 4096 2月 22 23:20 mypy
これで所有者の自分のみ読み書き実行可能になりました。
では、次はいよいよPythonコードを入力して実行していきます。
コメント