0
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

venvとrequirements.txt まとめ

Last updated at Posted at 2025-02-27

venvとは

venv は、Python に標準搭載されている仮想環境管理ツールです。

プロジェクトごとに独立した Python 環境を作成し、異なるプロジェクト間でパッケージの依存関係を分離することができます。

これにより、開発者PCや、システム全体の Python 環境を汚さずに開発を進めることが可能になります。

venvの利点

  1. プロジェクトごとの環境分離
    複数のプロジェクトを並行して開発する際、それぞれ異なるライブラリ、バージョンを使用できます。
  2. システム環境を汚さない
    pip install で直接パッケージをインストールすると、システム全体の Python 環境に影響を与えてしまいます。venv を使うことで、その影響を回避できます。
  3. チーム開発の効率化
    仮想環境を requirements.txt で共有することで、開発メンバーが同じ環境を再現しやすくなります。

インストール方法 (Windows & Mac)

Windows の場合

  1. コマンドプロンプトまたは PowerShell を開く

    python -m venv venv
    
  2. 仮想環境を有効化する

    venv\Scripts\activate
    

Mac の場合

  1. ターミナルを開く

  2. 以下のコマンドを実行し、仮想環境を作成する

    python3 -m venv venv
    
  3. 仮想環境を有効化する

    source venv/bin/activate
    

仮想環境の無効化(共通)

deactivate

requirements.txt

requirements.txt は、プロジェクトに必要な Python パッケージをリスト化し、開発メンバーが同じ環境を簡単に再現できるようにするファイルです。

これを作成することで、Githubなどのソフトウェア開発プラットフォームにvenvフォルダを無暗にアップロードすることを防ぐとともに、開発メンバーが同じPython開発環境を容易に再現出来るようになります。(.gitignoreなどにvenvを追記することを忘れずに!

requirements.txt の作成

仮想環境内でインストール済みのパッケージを記録するには、以下のコマンドを実行します。

pip freeze > requirements.txt

requirements.txt からの環境再現

別の環境(他のPCなど)で同じ環境を構築するには、以下のコマンドを実行します。

pip install -r requirements.txt

tips: requirements.txtの文字コードを変換する

デフォルトのWindows環境でrequirements.txtを作成すると、文字コードがUTF-16(またはUTF-16BOM)で保存されます。

このままMacのターミナルからインストールしようとするとエラーが発生します。

これを回避する手段は3つあります。

  • WIndowsでrequirements.txtを作成する際の文字コードを指定する
  • Mac側で最初にrequirements.txtを作成する
  • Mac側で文字コードを変換してからrequirements.txtをインストールする

WIndowsでrequirements.txtを作成する際の文字コードを指定する

Windows環境で作成する場合、BOMの有無・文字コードをオプションとして明示する必要があります。
以下のコードでBOM無し・UTF-8のrequirements.txtを作成できます。

pip freeze | Set-Content -Path requirements.txt -Encoding utf8

Mac側で最初にrequirements.txtを作成する

言葉通りなので割愛します。
※Windows環境でインストール時にエラーが発生した場合は、以下コマンドでBOM無し+改行コード変換してからインストールすると解決すると思います。

(Get-Content requirements.txt) -replace "`n", "`r`n" | Set-Content -Encoding utf8NoBOM requirements.txt

Mac側で文字コードを変換してからrequirements.txtをインストールする

一旦一時ファイルとしてUTF-8に変換したものを作り、リネームして、インストールします。

cd {requirements.txtのあるディレクトリ}
iconv -f utf-8 -t utf-8 < requirements.txt > requirements.tmp && mv requirements.tmp requirements.txt
pip install -r requirements.txt

異なるOSでの共通化

プロジェクト環境を Windows / Mac で共通化する場合、requirements.txt に環境マーカーを使用する必要が出てきます。

以下のように記述することで、OSごとに適切なパッケージのみをインストールできます。

環境マーカーを活用した requirements.txt

共通ならマーカーなしでOK

requirements.txt
selenium==4.9.1
webdriver-manager==4.0.1

Windows のみインストール

requirements.txt
pywin32>=223; sys_platform == 'win32'
pypiwin32; sys_platform == 'win32'

Mac のみインストール

requirements.txt
some-mac-specific-package; sys_platform == 'darwin'

この方法を使うことで、Windows / Mac 共通の requirements.txt を維持しつつ、それぞれの環境に応じたパッケージのみインストール することができます。

マーカー無しで環境再現しようとすると、エラーが生じます。以下はMacのエラーメッセージ一例です。

ERROR: Could not find a version that satisfies the reqirement pywin32==223 (from pypiwin32)(from versions: none)
ERROR: No matching distribution found for pywin32==223

まとめ

個人でPythonを用いた開発を進める際にも癖付けすることで、プロジェクトメンバーとして参加した際も、スムーズに対応できるかなと思います。enjoy.

参考記事

出力したCSVがExcelで文字化けバグ!検証と対処法との備忘録 - Qiita
CSVインポート時の文字化けを防ぐ方法

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?