プログラミングマガジン

プログラミングを中心にIT技術をできるだけわかりやすくまとめます。

  • ホーム
  • Python
  • 【Python】環境構築手法比較
 
 
     
  • サーバー言語  
    • Python
    • Ruby
    • PHP
    • SQL
  •  
  • インフラ  
       
    • AWS
    •  
    • 基本
    • Git
  • Web
       
    • Web開発
    • JavaScript
    • Vue.js
    • React
  •  
  • 設計  
       
    • 実装設計
    • DB設計
  • 問い合わせ
  

【Python】環境構築手法比較

06.15

  • miyabisan2
  • コメントを書く

この記事は3分で読めます

Pythonにはさまざまな環境構築手法やキーワードが出てきて始めたばかりの人は間違いなく混乱するので混乱しないよう備忘録として環境構築手法をまとめておきます。

環境構築手法のイメージ図

オフライン環境

実務ではこちらがメインです。

選択肢1:Docker環境

自分のPCに直接Pythonをインストールしたい場合は不要です。仮想環境なので環境を他人と共有しやすいですし、不要になったらいつでも削除できますし、パッケージのバージョンの不一致が起こりづらいというメリットがあります。上記のメリットが大きいので実際の開発現場でもよく使われています。

Python環境だけでなくDBなどの構築用途でも使えるのでDocker単体で構築するというよりはAnacondaなど他のPython環境構築手法と組み合わせて使うケースもあります。

Docker

最近人気

VirtualBox/Vagrant

2010年代前半〜半ばくらいまではよく使われていました。今はあまり使われないです。

選択肢2:pyenv+ venvで構築

pyenv

Macならこれを使います。

py.exe

Windowsならこれを使います。

モジュールを管理する目的

venv + pip

公式で標準の環境構築手法です。推奨されています。今後なくなることはまずないという意味で良いです。

pipenv

得られる効用としては「venv + pip」とほぼ変わらないです。ただ、venvとpipの二つの機能を組み合わせて便利に使えるようにしたものです。

選択肢3:Anaconda(Miniconda)で構築

仮想環境やパッケージ管理、pythonのバージョン管理など全部入りになっています。(pyenvの中にanacondaを入れ込む事もできますが、基本的にはpyenv的な役割も持つ用途が多いです。)

anaconda環境ならpyenvやvenvを使わなくても案件ごとに別のpython環境を構築することが可能になります。

機械学習やデータ分析系のモジュールをあらかじめある程度用意してくれているのでこの用途であればかなり良いです。pipだと機械学習系のパッケージの依存関係の解決などは大変ですが、その辺をあらかじめ解決してくれます。なお、AnacondaはJupyter Noteなどの実行環境も付属してくれます。

OSによってダウンロードやコマンドが若干変わってくる。おすすめの手法は今回紹介するこれになります。ただ、商用利用は有償になります。

MinicondaはAnacondaを最小限のパッケージにしたものです。必要なパッケージは都度インストールが必要になります。容量が小さく無料で使えます。

実行環境

実際に上記で環境構築したリソースを用いてPythonのプログラムを実行できる環境のことです。REPL、Visual Studio Code、対話型実行環境のJupyter Note、PyCharmなどが有名です。どれを選べば良いかわからない方は無料で高機能のVisual Studio Codeをまずはファーストチョイスするのがおすすめです。詳しくは以下の記事でも解説しています。

【Python】対話実行モード(REPL)。開発環境(PyCharm、IDLEなど)

どの環境を選ぶか。

結論:用途によります。

Windows向けソフト作成がしたい場合

DockerはWindowsのイメージが使えないので選択肢から外れます。Anaconda or pyenv + venvのどちらかを選びます。例えば、副業でWindows環境向けにスクレイピングソフトなどを作ろうと考えていらっしゃる方はこれに該当するんじゃないかと思います。

Webアプリケーションを作りたい場合

FlaskやDjangoなどですね。サーバーはLinux系を採用することが多いので、Dockerに軍配が上がるんじゃないかと思います。AnacondaでもWebアプリケーションは作ることはできますが、DBをどうするかとか考えたらやっぱりコンテナ化できるDockerでまとめて作ってしまう方が良いんじゃないかと思います。

機械学習用途

機械学習で使えるパッケージを用意してくれているのでAnacondaが良いと思います。(元々Anacondaはそういう用途で作られたみたいですし)

クラウド環境

環境構築が面倒でいますぐPythonを始めたいという学習目的などに向いています。

Colaboratory

Jupyter LabをベースにしているGoogleの対話型の環境です。アクセスするだけですぐ使えるのでCloud9よりこちらの方が便利です。OSの違いがない。完全無料。こちらもおすすめ。

  • パッケージのインストールが不要
  • 機械学習で使うGPUを使うのも無料
  • 作成したファイルはGoogleドライブで保管できるので簡単に共有できる。
  • ただ、ローカルファイルは読み込めないのでGoogle Driveにアップロードする必要があります。(もしこれが面倒な場合はJupyter NoteかLabを使うようにすると良いでしょう。)

Cloud9

AWSのサービスです。無料期間は1年間だけ。

スポンサーリンク
  • 2023 06.15
  • miyabisan2
  • コメントを書く
  • Python
  • Tweets Twitter
  • このエントリーをはてなブックマークに追加
  • LINEで送る

関連記事

  1. 2023 06.08

    【Python】Scrapyのデバッグ方法

  2. 2023 06.24

    【Python】PySimpleGUIについて

  3. 2023 06.04

    【Python】Scrapyで複数ページを操る。

  4. 2023 06.16

    【Python】WindowsでAnacondaを使った環境構築

  5. 2023 06.09

    【Python】Scrapy Item、Item Loader、Item pipelineの基本

  6. 2018 06.20

    【Python】「Anaconda」で「Django」の開発環境を作る。

  • コメント ( 0 )
  • トラックバック ( 0 )
  1. この記事へのコメントはありません。

  1. この記事へのトラックバックはありません。

返信をキャンセルする。

【Python】pyinstallerでPythonの…

【Python】WindowsでAnacondaを使っ…

RETURN TOP

著者プロフィール

エンジニア歴10年で過去に業務系、Webデザイン、インフラ系なども経験あります。現在はWeb系でフロントエンド開発中心です。

詳細なプロフィールはこちら

スポンサーリンク

カテゴリー

  • Android
  • AngularJS
  • API
  • AWS
  • C++
  • CSS
  • cursor
  • C言語
  • DDD
  • DevOps
  • Django
  • Docker
  • Figma
  • Git
  • GitLab
  • GraphQL
  • gRPC
  • Hasura
  • Java
  • JavaScript
  • Kubernetes
  • Laravel
  • linux
  • MySQL
  • Next.js
  • nginx
  • Node.js
  • NoSQL
  • Nuxt.js
  • Oracle
  • PHP
  • Python
  • React
  • Redux
  • Rspec
  • Ruby
  • Ruby on Rails
  • Sass
  • Spring Framework
  • SQL
  • TypeScript
  • Unity
  • Vue.js
  • Webサービス開発
  • Webデザイン
  • Web技術
  • インフラ
  • オブジェクト指向
  • システム開発
  • セキュリティ
  • その他
  • データベース
  • デザインパターン
  • テスト
  • ネットワーク
  • プログラミング全般
  • マイクロサービス
  • マイクロソフト系技術
  • マルチメディア
  • リファクタリング
  • 副業
  • 未分類
  • 業務知識
  • 生成AI
  • 設計
  • 関数型言語
RETURN TOP

Copyright ©  プログラミングマガジン | プライバシーポリシー