(モチベーション)
OpenSeesPyを利用しようと思ったところ、環境構築方法がOSによって違っていたり、Pythonバージョンによっては使えなかったり、使えるようになったとしても、VSCodeのインタープリターがOpenSeesPyのメソッドを解釈してくれなかったりと始めるまでに苦労しました。そのため、何かそれらに関わらず簡単に環境構築できる方法を考えました。
この記事について
- Dockerを使ってOSに関わらず環境構築
- VSCodeのRemote Developmentを使って、Dockerコマンドとか使わなくても簡単環境構築
- OpenSeesPy?インストールされるようにコード書いといたから、それを使えばOK
OpenSeesPyとは
OpenSeesは、Open System for Earthquake Engineering Simulationの略で、地震時における構造物や地盤の構造解析などで利用されているオープンソースのフレームワークです。OpenSeesPyは、それをPythonで利用するためのインタープリターです。
Dockerとは
Dockerはコンテナ仮想化によって、異なる環境でも同じ環境を構築することができるツールです。構築方法をファイルに記述しておけば、OSはもちろん、指定したバージョンのPythonのインストールやその他のライブラリのインストールなども、それはもうドッカーンと作成して実行してくれます。ドッカーンと。
手順
必要なもの
Docker Desktop
https://www.docker.com/products/docker-desktop
VS Code
https://code.visualstudio.com/
Remote Development(VS Codeにインストール)
https://marketplace.visualstudio.com/items?itemName=ms-vscode-remote.vscode-remote-extensionpack
Dockerfileを準備
DockerはDockerfileという名前のファイルを準備しておくとそれを元に環境を構築してくれます。今回は以下のように準備しました。主にやっていることは、
- Pythonインストール(バージョン3.8。linux環境も一緒に入る)
- pipをインストール
- pypiの必要パッケージをインストール
# Dockerfile
FROM python:3.8
RUN mkdir -p /usr/src/app
WORKDIR /usr/src/app
RUN apt-get update
RUN apt-get install -y --no-install-recommends \
python3-dev \
python3-pip
ADD . /usr/src/app/
RUN pip install -r requirements.txt
CMD bash
requirements.txtを準備
Dockerfileに記載した通り、 pip install -r requiremennts.txt
してパッケージをインストールするので、必要なパッケージを予め書いておきます。今回はOpenSeesPyを始めたいので、openseespyをお忘れなく。(てか、もはやOpenSeesPyに限らない方法なんだが)
# requrements.txt(例)
matplotlib==3.3.2
numpy==1.19.2
openseespy==3.2.2.5
pylint==2.6.0
Dockerfileとrequirements.txtは何かフォルダを作って、その中に入れておきます。
ドッカーン
VS Codeで開いて、VS Codeの左下の青いボタン(以下の図参照)を押します。そして、"Remote-Containers: Open Folder in Container..."を選択し、Dockerfileとrequirements.txtを用意したフォルダ選べば環境の構築完了です!
と言いたいところですが、このままだとまだOpenSeesPyのメソッドをVS Codeが理解してくれません。
開いた後に、.devcontainerというフォルダと、その中にdevcontainer.jsonというファイルが入っていると思います。それに、以下のように記述を追加しておけば今度こそ完成です!
# devcontainer.json
{
...
"settings": {
...
"python.linting.pylintArgs": ["--extension-pkg-whitelist=openseespy.opensees"] <- 追加
},
"extensions": [
"ms-python.python" <- 追加
]
}
完成したコード
できたものをすでに用意してありますので、差し替えます。(料理番組風)
https://github.com/kakemotokeita/openseespy-docker-vscode
良かったら使ってください。個人的に好みのものも入れてしまっているので、適宜不要なものは消してください。
間違っている点やうまくいかなかった点などあれば優しく教えてください。
ちなみに、OpenSeesは立体の構造解析が可能ですが、質点系の振動解析のみの場合なら、簡単な設定で使えるパッケージを作成しました。良かったら、こちらも使ってください。
https://github.com/adc21/asva
よろしくお願いします。