0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

自分とこの環境下におけるPython使用ルール

Posted at

完全に研究室のPython使用ルールとしてページを作成する.

更新履歴

2021/03/27:書き始め

概要

Pythonとパッケージ

Pythonにはパッケージと呼ばれる沢山の便利ライブラリがある.これを必要に応じてインストール・使用することで色々なプログラムを簡単に作れる.とりあえず,「Python パッケージとは」とかで検索するとちゃんと説明文が出てくるので詳しくはそちらを参考のこと.

便利なパッケージの落とし穴?

ちょっと複雑なコードを書こうとすると,なんらかのパッケージをインストールすることになる.するとどうなるか.気軽にパッケージをインストールできる分,プログラムとパッケージの依存関係が強くなる.しかも,バージョンの依存関係も結構面倒で,最新版にしていれば大丈夫!なんてことはない.むしろ「適切なバージョンを使用しましょう(それは最新版ではありません)」となることがある.

その結果,Pythonコードを先輩・同輩からもらった時に導入パッケージの違いによって動かないことがある.例えば先輩がOpenAI gymのパッケージgymをインストール・利用してコードを書いているとする.後輩がそのコードをもらった時にgymをインストールしていない or 大きく異なるバージョンを使用していると

「あれ?動かない,なんで?」

となっていらん時間をくってしまう.なので使っているパッケージ含めて管理をする必要がある.うちではanacondaを使うことにするので,関連する情報を記載しておく.

方針

  • 必要なパッケージはプロジェクト・プログラムごとに導入
  • 導入したパッケージを記録しておきコードと共に管理(GitLab)
  • 他の人が使用したい場合,コードと共に記録したパッケージ情報を使用

以上の実現のために,Anacondaをインストールし,その一部であるconda仮想環境を利用する.

  • プロジェクト・プログラムごとにconda仮想環境を作成
  • 仮想環境ごとに必要パッケージを導入し,仮想環境の情報として保持,コードと共に管理
    • 仮想環境の情報はconda env export > env.yamlでyamlファイル(名前は自由)に保存
  • 他の人が使用したい場合,yamlファイルから仮想環境を復元し利用
    • 仮想環境の情報はconda env create -f env.yamlで復元

パッケージは仮想環境毎にインストールすることになるので手間がかかる一方,仮想環境間での独立性は高まる(プロジェクト・プログラムに合わせてパッケージのバージョンを自由に変えられる).

具体的な流れ

  1. プロジェクト・プログラムのディレクトリ用意.
  2. 仮想環境用意(conda create).
  3. 普通にコーディング.必要に応じてパッケージをインストール(conda install).
  4. 仮想環境の情報をyamlファイルに保存して,git処理(conda env export, git add/commit, git push).
  5. 以上を繰り返し.

特にyamlファイルに保存し,git管理下に置くことが重要.忘れるべからず.

準備

anacondaをインストール.インストール方法は公式のインストールページにOS毎の方法があるのでそちらを参照.

使用方法

公式

公式にCondaコマンドのページがあり,まとまっている.

設定

anacondaをインストールするとログイン時からデフォルトの仮想環境(名前:base)にいる.そもそもログイン時に仮想環境にいることが嫌ならば以下の設定でデフォルト動作を決められる.

$ conda config --set auto_activate_base false # デフォルトオフ
$ conda config --set auto_activate_base true # デフォルトオン

GUIでの操作

CUI操作が基本だけど,GUIの操作はとても楽.以下でGUIでの操作を可能とするanaconda navigationを起動.

$ anaconda-navigation

CUIでの操作の簡単な説明

仮想環境の名前を[名前]として表記.例えば$ conda active [名前]で具体的な仮想環境の名前をtestとする場合,$ conda active testとなる.また,現在の仮想環境の名前は([名前])$のように$の前に表示される.例えば(test)$となる.

Pythonのバージョン変更

例えば3.8にする場合は以下のとおり.

$ conda install python=3.8

新しい仮想環境の作成

$ conda create --name [名前]

Pythonのバージョンを指定して作成する場合は以下のとおり

$ conda create --name [名前] python=3.8

仮想環境の起動・変更

$ conda activate [名前]

仮想環境自体を終了

$ conda deactivate

現在の仮想環境にパッケージをインストール・アンインストール

$ conda install [名前]
$ conda uninstall [名前]
以下例
$ conda install tensorflow # version指定しない場合
$ conda install tensorflow=1.15 # version指定するの場合

ここでcondaが取り扱っていないパッケージも存在する.その場合はpipにてインストールすることになるが,condaの管轄外に置かれてとても面倒なことになる.困った場合は,誰かに相談.
一応参考ページ

インストール済みパッケージ確認

$ conda list

パッケージのアップグレード

$ conda upgrade [パッケージ名]

仮想環境の情報(特にパッケージリスト)を出力

yamlファイルに出力

$ conda env export > [exportファイル名].yaml

仮想環境の情報から仮想環境を構築(パッケージを自動的にインストール)

$ conda env create -f [exportファイル名].yaml

仮想環境のクローン

$ conda create -n [新環境の名前] --clone [元の環境]

仮想環境の削除

$ conda remove -n [削除する環境の名前] --all

仮想環境の一覧

$ conda info -e
0
0
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?