LoginSignup
2
2

More than 3 years have passed since last update.

OSやPythonのバージョンに関わらずOpenSeesPyを使う

Last updated at Posted at 2020-10-21

(モチベーション)

OpenSeesPyを利用しようと思ったところ、環境構築方法がOSによって違っていたり、Pythonバージョンによっては使えなかったり、使えるようになったとしても、VSCodeのインタープリターがOpenSeesPyのメソッドを解釈してくれなかったりと始めるまでに苦労しました。そのため、何かそれらに関わらず簡単に環境構築できる方法を考えました。

この記事について

  • Dockerを使ってOSに関わらず環境構築
  • VSCodeRemote 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という名前のファイルを準備しておくとそれを元に環境を構築してくれます。今回は以下のように準備しました。主にやっていることは、

  1. Pythonインストール(バージョン3.8。linux環境も一緒に入る)
  2. pipをインストール
  3. 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を用意したフォルダ選べば環境の構築完了です!

image.png

と言いたいところですが、このままだとまだ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

よろしくお願いします。

2
2
0

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
2
2