0
3

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.

PyCharmのインタープリタ等の設定方法

Posted at

この記事の内容:PyCharmの開発環境ごとの設定方法

開発環境(本番・ステージング・開発等)ごとにPyCharmの設定を分けると開発が楽に進む。しかし、PyCharmの設定はいろいろあって分かりづらい。そこで、PyCharmのディレクトリ構造・Project interpreter・Project structure・Run/Debug Config・Virtualenvあたりについて、個人的におすすめの設定方法を書き残しておく。

前提となる環境

フロントエンドとバックエンドを分けて開発していること。

  • 以下では例として、フロントエンドはnode、Vue、Axiosで、バックエンドはPython、Django、DRF等を用いて説明する。
  • なお、ベースとなるリポトリとしてakiyoko/drf-vue-sampleを用いた。このリポジトリとの差分は、フロントエンドとバックエンドの分離の仕方のみ。

達成したいPyCharmの設定

  • 環境の分離
    • 開発・ステージング・本番等という開発ステージごとの設定の分離
    • フロントエンド単体、バックエンド単体、結合状態それぞれのモジュールごとの設定の分離

設定方法

ディレクトリ構造

frontendbackendを分離。トップレベルのtestで結合テストを実施。結合テストの設定ファイルは(pythonの場合は)./requiremetns.txtに書いておく。

drf-vue-sample2.
├── backend
│   ├── apiv1
│   ├── config
│   ├── db.sqlite3
│   ├── manage.py
│   ├── requirements.txt
│   ├── shop
│   ├── static
│   ├── tests
│   └── templates
├── frontend
│   ├── babel.config.js
│   ├── node_modules
│   ├── package-lock.json
│   ├── package.json
│   ├── public
│   ├── src
│   ├── tests
│   └── vue.config.js
├── requirements.txt
└── tests

本番・ステージング・開発等の環境設定

環境ラベル

  • 環境変数名は$DEPLOY_ENVで、ラベルは下記の通り。
    • 開発ローカルサーバー: dvl
    • 開発リモートサーバー: dvr
    • ステージングリモート: stg
    • 本番リモート: prd

* 開発環境だけはローカルとリモートの環境を2つ用意してある。理想的にはdevに統一してDocker使ったほうが良い。

Virtualenvs設定

~/.virtualenvs/drf-vue-sample2/bin/activateの最後に以下を追加する。

export $DEPLOY_ENV=環境ラベル

こうすると、ターミナルで行うmanage.py系統の処理(例:python manage.py makemigrations)にも環境ラベルが反映されるのでとても便利。逆に言えば、Run/Dedebug ConfigurationInterpreterの設定をいじってもmanage.py系の処理はターミナルから行う限り失敗する。

PyCharmのProject interpreter

2つ用意する。

  1. 結合テスト(drf-vue-sample2/test)を行うpythonインタープリター
    • drf-vue-sample2-integration
      • Seleniumを動かす等に用いる。
  2. バックエンドのサーバー立ち上げ、またはテストを行うインタープリター
    • drf-vue-sample2-backend

PyCharmのRun/Debug Configuration

3つ用意する。

  1. 結合テスト用の設定

    • integration_${開発ラベル}
      • テンプレートはpython tests
        • script pathはdrf-vue-sample2/testsを指定する。
      • インタープリターはdrf-vue-sample2-integration
  2. バックエンド用の設定

    • backend_${開発ラベル}
      • テンプレートはDjango server
        • 環境変数に、${DEPLOY_ENV}${DJANGO_SETINGS_MODULE}を追加
  3. フロントエンド用の設定

    • frontend_${開発ラベル}
      • テンプレートはnpm
      • 実行する前に、fronendのディレクトリで、npm installしておく。

Project Structure

  • backendfrontendの両方をsrcに足しておく。←意外と重要。
    • こうすると両者が混ざることで若干環境依存性を生むが、こうしないとインスペクション(エディタレベルでエラーやワーニングを出してくれる機能のこと)がうまく行かないのでこのように設定する。

以上の設定で一旦目標としていた状態(環境分離)は達成できるはず。

まとめ

  • PyCharmで環境を分けるには、最低限、Project Interpreter(フロント/バック/結合)と、Run/Debug Configuration(インタープリター種類✕{dev/prd/stg等})で分離するとよい。
0
3
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
0
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?