8
2

Python初心者に贈る、おすすめの環境構築 venv

Last updated at Posted at 2024-03-26

はじめに

2020年のコロナ禍にプログラミングを始めました。自己紹介にも書いているけど、大学の時にfortrunの単位を落としたリベンジ。w
で、ほとんどのPythonの初心者向けの本や講座、YouTubeなどは、まずAnacondaを勧められる。
ご多分に漏れず、僕もそうした。

で、しばらくしてDeep Learningに足を突っ込むんだけど、まぁ環境構築で苦労するのなんの。随分と時間をかけたし、苦労した。
そんな経験をしないようにおすすめを書いていこうと思う。
ということで、れっつご〜。

僕の環境

僕は会社ではWindows、家ではMacがメインでWindowsも使う。
なので、簡単に環境が作れて、管理できて、かつWin、Mac関係なくできることが肝心
qiitaは自宅で書いてるのでMacです。
2020 MacBook Air M1
python==3.10.8
pythonはAnacondaとかは使ってません。
こちらからダウンロードしたもの
https://www.python.org/

前提

Pythonがインストールされてること。
何より、ファイルパスの理解をしておいてください。絶対パスと相対パスは必須。どうせPythonを始めたらファイルパスがわからないと苦労するだけなんで、最初に理解してください。

環境構築の方法をざっと知る

様々な環境作成するためのソフトがある
面倒なので、ChatGPTに聞いてみた。

スクリーンショット 2024-02-16 12.21.05.png
色々あるよね。メジャーなもので抜けてるのはminicondaくらいかな.
使ったことがあるのは先にも書いたAnacondaMiniconda、そして僕がおすすめのvenvくらい。なので、この三つで比較したいと思う。

じゃおすすめは?

ズバリ、venv
異論は認める!だってその人が使いやすいならいいじゃん。

僕がそうだったみたいにプログラミング初心者がPythonを学ぶ時は
ぶっちゃけvenvでいいんじゃね?と思ってます。

理由は以下の通り

  • 自分でどこに環境ファイルがあるか理解しやすい
  • ファイルが管理しやすい
  • 複数のプロジェクトやプログラムを作っていても、それぞれの環境の把握に頭を使わなくて済む
  • venvが今までで一番苦労しなかった(理由になるのか?w)
  • 今どき、ほとんどのライブラリはpipでインストール可能

Anaconda、Minicondaも優秀だと思うけど、以下が初心者にとってつまづきポイント

  • 複数の環境を使い分けるのがめんどくさい(別でメモをするなど必要なことも)
  • 環境が保存されているところまで見に行くのが面倒
  • 容量を食う
  • 大手企業さんだとAnacondaは有料になっちゃう

きっと数年前だと、Anaconda系は非常に便利だったと思うんだけど、その時代のことは知らない。
あと、プログラミングの勉強をするときはなるべく新しい本を使うのが良いと思う。
一部、古くてもとってもいい本もあるけどね。

なんで仮想環境がいるの?

ですよね。最初は意味不明でした。
僕の理解は以下の通り。間違っていたら教えて欲しいです。
Pythonをインストールするとこんな感じ。正確にOSの上に載っているのかどうかは知らないけれど、とにかく、インストールしたPythonがある。
ここにさまざまなライブラリを入れていくと、意外と膨大なPython+ライブラリになってしまう。
例えばPytorchとか数百MBあるらしい。
汚染.png

となると、どんどんベースのPythonにライブラリを入れていくと、便利にはなるだろうけど、肥大化してしまいますよね。あと、ごく稀にライブラリ同士が干渉して壊れちゃったりする。(何度か経験あります)
なので作り替えできる方が安心。

ということで、
おすすめはインストールしたPythonをそのまま取っておいて、作業別にコピーしたものを使う方法。このコピーしたものが仮想環境だと思いましょう。(あってるかどうかは知らん。ごめん)
おすすめ.png

こうしておくと万が一仮想環境(図中の「Python(コピー)」)が壊れてもあっさり捨てて作り直せばいい。

僕のスタイルの紹介

まず、異論反論は認めます!w
あくまで僕のやり方です。

  • 作業するためのフォルダを用意する(フォルダ名を作りたいものなどにしておくとわかりやすい)
  • cmdやPowerShellなどで作業フォルダに移動
  • そこに仮想環境を作る
  • 仮想環境に入る
  • 仮想環境から抜ける
  • 仮想環境を破棄する

プログラムって初心者の頃は一つのファイルで行うことが多いともいますが、いずれ複数のファイルを連携して書くことになるので、作業管スペースを用意した方がいいと思います。
なのでどこか好きなところに作業フォルダを作りましょう。
例えばDesktopにworkspaceという作業スペースを作りましょう。こんな感じ。

Desktop/
└── project

あ、日本語はやめといた方がいい。文字コードっていう大敵が待ってる。w
いまだに僕は苦手。
ここに仮想環境をつくっちまえばいい。管理不要。だって作業スペースの中に仮想環境のファイルができるんだもん。

イメージはこんな感じ。デスクトップにprojectというフォルダにプログラムを書くこととします。

Desktop/
└── project
    ├── 「仮想環境ファイル」
    |

ここで少しあの黒い画面を触ります。怖いよね。
Macだとターミナル、Windowsだとコマンドプロンプト、PowerShell
ここで使うのは簡単なことだけ、これらのいずれかを開いて、cd(「cd」と半角スペース)を打って、そこに上で作った作業フォルダ「project」をドラッグ&ドロップ。
68747470733a2f2f71696974612d696d6167652d73746f72652e73332e61702d6e6f727468656173742d312e616d617a6f6e6177732e636f6d2f302f333635353332302f38323963383032352d353136302d366234652d623437622d3838363630306537303362342e706e67.png

そしてリターンすると、作業フォルダ「project」に移動ができます。赤線のあたりを見てもらうと移動したことがわかります。
スクリーンショット 2024-02-20 7.24.32.png

ここで、以下を実行しましょう。(Macだとpython3、ウインドウズだとpythonにしなきゃです)

python3 -m venv 仮想環境名

例えば以下のような感じ

python3 -m venv project_env

ウインドウズならpython3 -m venv project_envの「3」がなくてもOK

出来上がりは

Desktop/
└── project
    ├── project_env/
    |

こうすることで作業フォルダ内に仮想環境のファイルがあるので、幾つかの作業フォルダができてもそれぞれに環境を配置して管理が楽ちん。

以前つまづいたこと

よく、教科書的なサイトや本に書かれている方法
python3 -m venv .venv
これ、最初は理解できませんでした。w
なぜならvenv.venvの違いがわからなかったから。
.venvは単なる仮想環境の名前なので、なんでもいいんですよね。そこに至るまで時間がかかった。w
しかも、「.」をつけて隠しファイルにする必要性もいまだにわからない。(誰か教えて!)
まぁ、半角英数ってことだけ気をつけておけば無用なトラブルもないでしょう。

では仮想環境に入りましょう。(ワクワク)

まず、Macやlinuxの場合

さっきの黒い画面(ターミナルやコマンドプロンプト)でsourceと半角スペースを打ちましょう。
その次にさっきのpython3 -m venv project_envでできたフォルダの中のbinフォルダの中のactivateをドラッグ&ドロップして、
スクリーンショット 2024-02-20 7.43.19.png

リターン
スクリーンショット 2024-02-20 7.43.38.png

そうすると行の先頭が(project_env)から続く表示に変わっていたら仮想環境に入ってます。
スクリーンショット 2024-02-20 7.44.03.png

仮想環境から抜ける時はターミナルでdeactivateと打ってください。

次にWindowsの場合

仮想環境の中のScriptフォルダ内にactivateファイルをcmdやPowerShellにドラッグ&ドロップしてリターンすればOK
抜ける時はMac、linuxと同じくdeactivateと打つだけ

まとめ

ということで、多分実践的ではないかもしれないけれど、仮想環境で困った末に辿り着いた方法を書いてみました。
シンプルに書くと以下のような構成になります。

Desktop/
├── project
    ├── project_env/
    ├── aaa.py  
    ├── bbb.ipynb  

実際にはデータフォルダを追加したり、.pyファイルを一箇所にまとめたりというような事はやってます。
こんな感じ

Desktop/
├── project
    ├── project_env/
    ├── data/
    │   ├── abc.csv
    │   └── def.csv
    ├── src/
    │   ├── hij.py
    │   └── klm.ipynb
    ├── readme.md  

複数のプロジェクトが動いていても楽ちん

Desktop/
├── project1
│   ├── project1_env/
│   ├── data/
│   │   ├── abc.csv
│   │   └── def.csv
│   ├── src/
│   │   ├── hij.py
│   │   └── klm.ipynb
│   ├── readme.md  
├── project2
│   ├── project2_env/
│   ├── data/
│   │   ├── abc.csv
│   │   └── def.csv
│   ├── src/
│   │   ├── hij.py
│   │   └── klm.ipynb
│   ├── readme.md  
├── project3
│   ├── project3_env/
│   ├── data/
│   │   ├── abc.csv
│   │   └── def.csv
│   ├── src/
│   │   ├── hij.py
│   │   └── klm.ipynb
│   ├── readme.md  

ちなみにディスったAnacondaはこんな感じになります。(だいぶ忘れたけど)
仮想環境の保存場所がAnacondaに決められているというか、全然違うフォルダ内なんですよね。
僕には管理できませんでした。w

├── 仮想環境のフォルダ(正式な場所を忘れた)
│   ├── project_env1
│   ├── project_env2
│   ├── project_env3
│   ├── project_env4
...   
├── project1
    ├── aaa.py  
    ├── bbb.ipynb  
├── project2
    ├── aaa.py  
    ├── bbb.ipynb  
├── project3
    ├── aaa.py  
    ├── bbb.ipynb  
 

これができたらバリバリコードを書いていきましょう!
おすすめは、以前紹介したこちら。

おしまい

8
2
2

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