0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

環境に関する備忘録

Last updated at Posted at 2024-11-02

環境の構造

環境構造のイメージをわきやすくするためのメモ
使用PC: Mac

condaドキュメント
https://docs.conda.io/projects/conda/en/latest/user-guide/tasks/manage-environments.html

パッケージ管理システムとは

ライブラリなどを一つのファイルとしてまとめているものをパッケージと呼び、
パッケージ管理システムとはこのパッケージのインストール(アンインストール)作業を一元的管理するもので、パッケージやライブラリの依存関係などが管理できる。
例)

  • Homebrew(git, tree, pyenvなど)
    • Homebrewはシステム全体のツールやアプリケーション管理に適している。
  • Conda(機械学習ライブラリなど)
    • CondaはPythonやRの仮想環境とライブラリ管理に適している。

そのため同じパッケージ管理システムだけど対象としているレイヤが違うというイメージ。

各パッケージ管理システムを用いた際のディレクトリ構造(概念図)

[OS]
 ├─[Homebrew]  ← HomebrewはOS全体で利用可能なパッケージ管理ツール
 │     ├─ システムパッケージ(例: Python, Git, Node.js)
 │     ├─ その他の開発ツール(例: curl, wget)
 ├─[Anaconda, Pythonインタプリタ(グローバル環境: base環境)]
 │     ├─ Python本体
 │     ├─ 標準ライブラリ
 │     └─ [Condaコマンド]
 │           ├─ 仮想環境の作成・管理
 │           └─ パッケージのインストール・管理
 └─[仮想環境(プロジェクトA用)]
 │     ├─ Python本体(仮想環境用)
 │     ├─ 標準ライブラリ(仮想環境用)
 │     └─ プロジェクト専用パッケージ
 └─[プロジェクトA]
       ├─ 仮想環境設定ファイル(requirements.txtやPipfile)
       ├─ main.py(コード)
       └─ データファイルや設定ファイル

仮想環境で作業をする時の概念フロー

Anacondaのbase環境にあるcondaコマンドを使って、envsディレクトリ(上図の[仮想環境])に仮想環境を作成・管理可能。
実際のプロジェクト作業[プロジェクトA]では、該当の仮想環境をアクティベートし、そこで使用したいPythonやパッケージを利用する。

Anaconda環境でpipを使う場合

引用:https://www.python.jp/install/anaconda/pip_and_conda.html

Anacondaの実行環境でも、 pip でPyPIのパッケージをインストールすることはできます。しかし、pip と conda の違いのために、依存関係の管理に不具合が発生してしまう場合があります。特に、Anaconda cloudとPyPIの両方で公開されているパッケージを pip を使ってインストールした場合などに、問題になるケースがあります。

conda と pip はそれぞれ独立してパッケージのインストール環境を管理しています。conda がインストールしたパッケージは pip では把握していませんし、 conda でインストールしたパッケージの情報は pip では把握していません。このため、Anaconda環境で pip を使ってパッケージをインストールすると、パッケージの依存関係の管理に不具合が発生してしまう場合があります。

pipを使う場合

Anaconda cloudで公開されているパッケージは、PyPIにあるパッケージのごく一部です。必要なパッケージがAnacond cloudになければ、pipを使ってPyPIからインストールしなければなりません。しかし、pip でインストールする前に、かならず conda search コマンドなどを使って、Anaconda で公開されていないか確認してから、PyPI版を使うようにしましょう。

pip の利用で問題が発生する場合、科学技術計算以外の用途で利用しているのであれば、そのときだけAnancondaではなく、通常のPythonに切り替えてPyPIを併用するのも一案です。

実際に自分の環境を眺める

  • Anacondaの場所
Macではデフォルトでここにある。(隠しファイルになってる)
/Users/username/anaconda3

さっきの図で言うと
[OS]
 │    
 ├─[Anaconda, Pythonインタプリタ(グローバル環境: base環境)]  ←ここにあたる
 │     ├─ Python本体
 │     ├─ 標準ライブラリ
 │     └─ [Condaコマンド]
 │           ├─ 仮想環境の作成・管理
 │           └─ パッケージのインストール・管理
 └─[仮想環境(プロジェクトA用)]
 │     ├─ Python本体(仮想環境用)
 │     ├─ 標準ライブラリ(仮想環境用)
 │     └─ プロジェクト専用パッケージ
 └─[プロジェクトA]
       ├─ 仮想環境設定ファイル(requirements.txtやPipfile)
       ├─ main.py(コード)
       └─ データファイルや設定ファイル

これがグローバル環境(base)であり、
(base)上でconda install, pip installしたものは

/Users/username/anaconda3/lib/pythonX.X/site-packages/
に格納される。

[OS]
 │    
 ├─[Anaconda, Pythonインタプリタ(グローバル環境: base環境)]  
 │     ├─ Python本体
 │     ├─ 標準ライブラリ    ←ここにあたる
 │     └─ [Condaコマンド] 
 │           ├─ 仮想環境の作成・管理
 │           └─ パッケージのインストール・管理
 └─[仮想環境(プロジェクトA用)]
 │     ├─ Python本体(仮想環境用)
 │     ├─ 標準ライブラリ(仮想環境用)
 │     └─ プロジェクト専用パッケージ
 └─[プロジェクトA]
       ├─ 仮想環境設定ファイル(requirements.txtやPipfile)
       ├─ main.py(コード)
       └─ データファイルや設定ファイル

に格納される。

[仮想環境(プロジェクトA用)]を詳しくみると、下記の構造になっている。

[仮想環境(プロジェクトA用)] venv/ 
│
├── bin/
│   ├── Activate.ps1
│   ├── activate
│   ├── activate.csh
│   ├── activate.fish
│   ├── pip
│   ├── pip3
│   ├── pip3.12
│   ├── python
│   ├── python3
│   └── python3.12
│
├── include/
│
├── lib/
│   │
│   └── python3.12/
│       │
│       └── site-packages/
│           │
│           ├── pip/
│           │
│           └── pip-24.2.dist-info/
│
└── pyvenv.cfg

引用: https://realpython.com/python-virtual-environments-a-primer/#what-is-a-python-virtual-environment

仮想環境のディレクトリには、

  • Pythonとpipの実行ファイル(bin/
  • C拡張用のヘッダーファイル用フォルダ(include/
  • 外部パッケージをインストールするディレクトリ(lib/
  • ファイルには環境設定が保存されているファイル (pyvenv.cfg)
    • このファイルにより、その仮想環境で使用するPythonインタプリタの場所などが指定される。

この仮想環境で作業する時はbin/内のPythonインタプリタを使用し、インストールした外部パッケージはlib/pythonX.X/site-packages/に格納され、使用される。というイメージ

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?