Ubuntu初心者がPython開発環境構築の初歩で詰まった2つのこと

2021.02.21

さがらです。

先日行ったWSL2のセットアップ後、Python開発環境を構築しようとしたのですが、少し詰まった点が2つありましたので本ブログで共有させて頂きます。

※WSL2のセットアップブログはこちらから

これまで私はPythonを使った経験自体はあるのですが、「WindowsでAnaconda入れて環境構築完了」というレベルだったので、Anacondaに頼らずPython環境を構築するのは初めてでした。

内容は知っている方からすると大したこと無い内容かもしれませんが、Ubuntu等のLinuxに慣れていない方がPython使おうとすると起こりうる問題かと思うため、少しでも参考になれば幸いです。

※2021/2/22追記

Twitter等での反応、ありがとうございます!

私もこのブログを書いた後、「ライブラリによってはPythonのバージョン指定もあるし、Python自体のバージョンと使用するライブラリもプロジェクトごとに管理できたほうがいいよな」という結論に至り、現在はpyenv + venvの組合せでPythonの開発環境を構築しました。

その際、こちらの記事を参考にして実装しました。 わかりやすい記事ですので、pyenv + venvでPythonの開発環境を構築する際には参考にしてみてください!

私のこのブログは、Ubuntu初心者の私の純粋な備忘録として、このまま掲載をさせて頂きますので、よろしくお願い致します。

実施環境

WSL2上のUbuntuで実施しました。

  • Windows
    • エディション:Windows 10 Pro
    • バージョン:20H2
    • OSビルド:19042.804
  • Ubuntu
    • バージョン:20.04 LTS
    • Ubuntuインストール直後の、まっさらな状態からスタート

問題その1:pip3がインストールできない

問題詳細

Ubuntu 20.04 LTSにはPython3.8.2が元々インストールされていたため、何も考えず「どんなライブラリ入っているのかな」と思い、pipコマンドを入力しました。

すると、「pip3が入っていないよ」と表示されたので、指示通りsudo apt install python3-pipを実行しました。

しかし、なぜか下図末尾のように、エラーが表示されてしまいました。 「"no installation candidate"って何だ…?何故候補が無いんだ…?」となりました。

解決方法

色々調べた結果、apt updateapt upgrade、この2つのコマンドの実行が必要だとわかりました。

それぞれ、以下のような役割を担っています。

  • apt updateは、Ubuntu上にインストールされている各種プログラムパッケージの更新情報を取得。
  • apt upgradeは、apt updateで取得した更新情報に基づき、各種プログラムパッケージの更新を行う。

より詳しくは、下記の記事に事例付きで掲載されているためわかりやすいかと思います。

ということで、今回の場合は「Python3は元々Ubuntuに入っていたけど、Python3に関わるpip3含めた各種パッケージ情報が更新されていなかったため、pip3がインストール出来なかった」ということがわかりました。

手順

では、実際にapt updateapt upgradeを行って、pip3をインストールするまでの手順を記します。

まず、apt updateを行い、各種パッケージの更新情報を取得します。 使用しているUbuntu全体のシステム設定に関わるため、sudoをつけて実施します。

sudoに関してはこちらの説明がわかりやすかったです。)

次に、apt upgradeを行い、各種パッケージを更新します。 こちらもsudoをつけて実施します。

途中で、このまま更新を続けてよいか確認されるため、Yを入力してEnterを押します。

この後で、先程失敗したpip3のインストールコマンドを入力します。こちらも途中で更新確認があるため、Yを入力してEnterを押します。

これで、無事にpip3がインストールされました! これで、pandasなど便利なPythonパッケージをインストール出来るようになりました。

問題その2:「python3」コマンドしか使えない

問題詳細

続いて、Pythonを実行しようとすると、Python3コマンドでしか実行できないことに気づきました。

pipも同様に、pip3コマンドしか機能していません。

解決方法

この問題の原因は、「python3の実行ファイル名がpython3であるため」です。pip3も同様です。

実行ファイル名を変えると様々な所に悪影響を及ぼすリスクがありますので、alias.bashrcに追記する、ということを行います。

aliasは、「コマンドの別名」を登録する機能です。 例えば、lsコマンドで隠しファイルをまとめて表示したいときにはls -aと入力しますが、alias la='ls -a'のように記述して一度実行することで、laだけでls -aが実行できるようになります。

.bashrcは、Ubuntuのデフォルトシェルであるbashが起動した後に読み込まれる設定ファイルのことです。 .bashrcaliasを追記する理由は、aliasもコマンドのため、シェル起動時に都度実行してあげないと適用されないからです。

手順

では、実際に「alias.bashrcに追記」してみます。

まず、.bashrcは基本的に「home下の各ユーザー名のディレクトリ」、つまりはデフォルト設定のホームディレクトリ上に隠しファイルとして存在しています。

この.bashrcを、任意のエディターで開き、その末尾に以下のように追記して保存します。

alias python="python3" 
alias pip="pip3"

最後に、source ~/.bashrcコマンドを実行後、pythonで実行できるか確認してみます。

sourceコマンドは、引数に指定したファイルに記載されているコマンドをまとめて実行するコマンドです。 .bashrcはシェルの起動時に自動で実行されるのですが、内容を変更したので再度実行させてあげる必要がある、ということです。

このコマンドを実行後、試しにpythonコマンドを使って下図のように表示されればOKです!

注意事項

正直、この2つ目の問題の解決は好みによります

「問題」という表記も良くないかもしれません。正直悪影響を及ぼすような「問題」ではないので、「事象」という表記が適切かもしれません。

下手にaliasを追加したくない場合や、python3pip3コマンド入力でも問題ない場合は、実施しなくてもOKです!

最後に

いかがでしたでしょうか!

本当に初歩的な内容でしたが、Anacondaに頼り切っていたUbuntu初心者からすると、実行したコマンドの勉強にもなり、よい経験となりました。

似たような経歴の方や、同様の問題に遭遇した方にとって少しでも助けになれば幸いです。