Poetryのコマンド
Poetyのコマンドは忘れがちなので、メモしておきます。
例えば、Python 3.9.8をインストールする場合。
pyenv install 3.9.8
pyenvを使用して、プロジェクトディレクトリでPython 3.9.8を使用する。
pyenv local 3.9.8
poetryプロジェクトディレクトリで、poetryの仮想環境を再作成。
poetry env use $(pyenv which python)
仮想環境が正しくアクティブになっていることを確認。
poetry shell
仮想環境がアクティブな状態で実行。
python XXXX.py
もしくは
poetry run python XXXX.py
pandasインストール時のエラー
表題の通り、Pandasを再インストール指定たら、下記のようなエラーが出ました。
AttributeError: partially initialized module 'pandas' has no attribute '_pandas_parser_CAPI' (most likely due to a circular import)
多少難儀したので、解決方法をメモしておきます。
ちなみにエラーが出力されたのはバージョンは2.2.0
解決法
まずpip uninstall pandas
でアンインストールしてからpip install pandas==2.1.0
で旧バージョンをインストールしたら直りました。
Pythonでよく使うコード:その3 Pandas編
publicjournal.hatenablog.com
publicjournal.hatenablog.com
Pandasの基礎
抽出
pythondatascience.plavox.info
列の抽出はdf.loc[:,['A','B']]
でもいけるし,df[['A','B']]
でもいける
deepage.net
Jsonファイルの取り扱い
データの型
大容量を読み込む
Dockerによる環境構築
先日、図書館に行ったら良さげな本が置いてあったので借りてきました。最低限の機能を使いこなすために必要な知識を丁寧に解説している良書でした。
そういえば、これまでDockerを自己流で使っていました。必要なものだけを調べるだけで、体系的には勉強していませんでした。折角なので、これを機に勉強してみます。勉強がてらに、この記事に本書の要点をメモしておきます。
本書のメモ
環境を立ち上げる
この書籍では、まず環境を立ち上げるコマンドとして、次のものが紹介されています。
docker run --name tutorial -d -p 80:80 docker/getting-started
コマンドについては次の通り。
コマンド | 説明 |
---|---|
run |
コンテナを作成し、実行するコマンド。container という単語は省略可。 |
name tutorial |
ダウンロードしたコンテナに名前を付けるための引数。今回はtutorial という名前が指定されているが、この引数を指定しない場合でも、自動的に名前が付けられる。 |
p 80:80 |
仮想コンピュータ内とホストコンピュータ側を接続するための引数。`80:80`は接続するポート番号を示しており、ホストコンピュータ側で80番ポートで接続すると、仮想コンピュータ側の80番ポートに接続される。 |
docker/getting-started |
取り込むイメージファイルを指定するための引数。 |
dockerコマンドの例
本書で紹介されている代表的なコマンドについて、記載しておきます。
コンテナの停止、削除
// コンテナの停止 docker stop tutorial // コンテナの一覧を表示 docker ps -a // 削除 docker rm tutorial
あとは、この書籍では「すべて破棄するまでがDocker」と解説されていました。これまではあまりそういう意識が無かったです・・。作りっぱなしで放置でした。
// イメージを削除 docker image re // イメージの一覧を表示して、存在するイメージを確認 docker image ls
Docker composeを試す
コマンドだけでは大変なのでDocker composeというDockerの立ち上げ設定書の機能があります。(ここら辺は知っている話なので、割愛)
コンテナとイメージについて紹介されていて、各々には次のような違いがあります。
- イメージ:プログラムのもととなるファイルのようなもの
- コンテナ:そのイメージを使って作成するもの
参考:'Docker のイメージとコンテナ: どう違う?' | CircleCI
Docker composeのyamlを編集するにあたって、ボリュームのマウントというのがあります。ボリュームというのは、OSによって定義された区切りであり、ストレージの単位の一つ。マウントの仕方については次の通りです。
Docker composeのコマンド
イメージの作成 build
docker compose build
コンテナの作成 create
docker compose create
コンテナの起動 start 、既存コンテナの再起動 restart、 既存コンテナの停止 stop
docker compose start docker compose restert docker compose stop
コンテナの廃棄 rm
docker compose rm
一気にコンテナを立ち上げる up、 一式のコンテナを停止して廃棄する down
docker compose up -d docker compose down // コンテナが削除されているかを確認する docker compose images
コンテナを実行 run
runの後にはdocker-compose.ymlファイルのservice内のimage名を入力する
docker compose run httpd bash
特定のコンテナ内でコマンドを実行 exec
runとの違いは既にコンテナがupされているかどうかという違いです。対話形式のコマンドbushも立ち上げられます。新しい画面を開いてほかの操作をするのと同じ感覚でコンテナを操作できる。exitでbushから出る。
docker compose up -d docker compose exec httpd bash #exit docker compose down
docker run -d -p 8001:80 docker5-1
ハンズオンで試してみる
基礎の部分を一通り読んでみたので、自分で手を動かしてみます。最近はよくPythonを使うので、Python環境を作ってみます。本書の解説とググって出てきた下記のサイトを参考に動作を試してみます。
まずは作業ディレクトリを作成する
test_docker_python
というディレクトリを作ってみます。この中にyamlとDockerfileを置いておきます。
docker-compose.yml
は次の通りに設定しました。今回はWindows側のDドライブの中に後述のtest.py
というスクリプトを置いて、これの動作を試します。
version: '3' services: python3: build: context: . dockerfile: Dockerfile container_name: 'test_python_env' volumes: - /mnt/d/test://new_dir tty: true
Dockerfile
も下記のように作ってみます。よく使うライブラリをインストールする、という想定で作成してみました。
FROM continuumio/miniconda3 RUN conda create -n chemodel python==3.10 RUN conda install numpy RUN conda install scipy RUN conda install pandas
イメージを作成する
dockerを起動して、buildコマンドを実行します。
buildした時に、下記のようなメッセージが出力されました。
Use 'docker scan' to run Snyk tests against images to find vulnerabilities and learn how to fix them
これはこれで、一応ビルドされているっぽいです。
コンテナを作成する
背景色が見づらいですが、下記のように実行します。
コンテナを起動する
起動されていることを確認
Python起動
凄い簡単に作ったtest.pyを動かしてみます。マウントされているWindows側のファイルを指定します。
# test.py import pandas as pd import os path ='test_csv.csv' print(os.path.exists(path)) #pd = pd.read_csv(path)
トラブル
下記のようにexceコマンドが実行できないというトラブルがありました。元々は下記のようにDocker composeを書いていました
version: '3' services: python3: build: context: . dockerfile: Dockerfile container_name: 'test_python_env' volumes: - /mnt/d/test://new_dir
これだと、ただbashを実行しただけで終わってしまいます。 State が「Exit 0」(正常終了)で終わっています。
なので、下記を参考にtty
を入れました。
teratail.com
もしくはdocker compose start
を忘れても同じメッセージが表示されます。
WSL2にDockerをインストールする
去年の夏くらいに条件付きでDocker Desktop有償になりました。誤って有償の条件に当てはまっていたら面倒なので、無償の方法を模索して環境構築をしました。
あの時はネットの記事を調べて断片的に実施していったものの、まとまっている記事がなかった気がします。そのせいか、最近PCを変えてDocker無償環境構築をしようとおもってもどうやったのか忘れました・・・。
なので、Dockerの環境構築の方法をメモしておきます。加えて、最近は良くPythonを使うので、Visual Studio CodeとJupyter Notebook上でPythonを使う方法を書いておきます。
WSL2をインストールする
ここら辺は公式ドキュメントやQiita記事を読んだほうが分かりやすいです。とくにハマるところも無いし。転記するのも面倒なのでリンク先を参照のこと。
www.kagoya.jp
qiita.com
【Note】
Docker環境を構築する
Docker Engineをインストールする
この辺もリンク先を参照のこと。
docs.docker.com
Docker Engineを起動する
# 起動 sudo service docker start
# 状態確認 sudo service docker status
# 動作確認 sudo docker run --rm hello-world
Visual Studio Codeを起動する
参考
zenn.dev
zenn.dev
zenn.dev
qiita.com
一般ユーザーへの権限付与
www.mwsoft.jp
zuma-lab.com
docs.docker.jp
zenn.dev
Pythonライブラリに関するチートシート
以前からプログラミング作業効率化のために、Pythonでよく使うライブラリについてまとめていました。
publicjournal.hatenablog.com
publicjournal.hatenablog.com