Skip to content

DNET_Python

nishi_74322014 edited this page Sep 11, 2026 · 1 revision

Python

概要

  • 豊富で大規模な文書
  • 本体部分は必要最小限に抑えられている。
  • Pythonのリファレンス実装であるCPythonは、OSS。

特徴

言語

複数のプログラミングパラダイムに対応している。

  • オブジェクト指向
  • 命令型
  • 手続き型
  • 関数型
  • 動的型付け

実装

  • 参照カウントベースの自動メモリ管理(GC)を持つ。
  • さまざまな領域に対応する大規模な標準ライブラリやサードパーティ製の
    ライブラリが提供され、本体にない機能はその都度呼び出して使用する。
  • 多くのハードウェアとOSに対応(Linux版、Mac版、Win版、32/64bitが存在)

バージョン

  • 2.x 系のバージョンと 3.x 系のバージョンが存在。
  • 2.x 系と3.x 系には互換性がない。

Python 2

Python 2.x はレガシー

Python 3

  • Python 3 が Python 言語の現在と未来
  • 本項の執筆時点で、Python 3なので、
    本項ではPython 3を取り扱っている。

詳細

インストール

Linux

  • システム標準のモノがインストールされている。

    $ python3 -V
    Python 3.10.4
    
  • pip

    • インストールは別途、必要になる。

      $ sudo apt update -y && sudo apt upgrade -y
      $ sudo apt install -y python3-pip
      
    • ただし、OSの一部のツールがPythonに依存しているため、
      sudoやrootで、グローバル領域にインストールしないようにする。

      sudo pip install ...
      
    • なんなら、システムのPythonにはpipをインストールしない方が良い。

    • 別バージョンをインストールしたり:システム標準のPythonに別のPythonを追加インストールできる(LLMのFTの該当節を参照)。

    • 別バージョンをインストールできないなら:仮想環境の技術を使用する(venvを使うのが一般的)。

  • エイリアス設定

    • 設定ファイル(環境変数の設定方法の該当節を参照)を開く。

      vim ~/.bashrc
      
    • 以下のコードを最後の行に追加(操作は viと同じ)

      alias python="python3"
      alias pip="pip3"
      
    • 保存したら、sourceする。

      source ~/.bashrc
      

Windows

Python on Windowsの該当節を参照。

基本操作(python)

pythonのバージョン確認

python --version
python -V
python3 --version
python3 -V

pythonのインタラクティブモード(REPL)

直接Pythonコードを入力・実行できる。

  • 起動

    python
    
    python3
    
  • インタラクティブモード(REPL)

    >>> print("こんにちは")
    こんにちは
    
    >>> 2 + 3
    5
    
    >>> for i in range(3):
    ...     print(i)
    ...
    0
    1
    

※ 即時実行か?複数行入力後実行か?はPythonが自動的に判断してくれる。

簡単なpythonコードの一行実行

python -c "print('Hello, world!')"
python3 -c "print('Hello, world!')"

pythonスクリプト・ファイルの実行

python script.py
python3 script.py

基本操作(pip)

パッケージのインストール

システムPythonと別のPythonをインストールしたり、仮想環境を切ってから実行する方が安全

pip install パッケージ名
pip install パッケージ名==バージョン

パッケージのアップグレード

pip install --upgrade パッケージ名

パッケージのアンインストール

pip uninstall パッケージ名

インストール済みパッケージの確認

pip list

特定インストール済みパッケージの情報表示

pip show パッケージ名

依存関係を含めたインストール

pip install パッケージ名[extra]
  • よく使われるパッケージと extra の例
パッケージ名 extraの例 説明
fastapi all, dev, docs 開発・ドキュメント関連
requests security, socks SSL強化やSOCKSプロキシ対応
pandas performance 高速化ライブラリ(例:numba)

requirements.txt から一括インストール

pip install -r requirements.txt
  • requirements.txtの作成方法

    • 現在の環境から自動生成する

      pip freeze > requirements.txt
      
    • 以下の様に手動で作成する

      numpy==1.21.0
      pandas>=1.3.0
      requests
      matplotlib<=3.4.3
      

仮想環境

Anaconda

Anacondaは専用の仮想環境ツールが実装されている(Pythonファースト・ステップの該当節を参照)。

virtualenv

システム全体のPython環境に影響を与えずに、プロジェクトごとに独立したPython仮想環境を構築するためのツール

  • 仮想環境を有効にするには、activateスクリプトを実行する。

  • 仮想環境内で必要なパッケージをインストールすると、

    • 指定したディレクトリにPythonの実行ファイルやライブラリ、pipをコピー
    • プロジェクト毎に異なるパッケージやバージョンを使用できる。
  • 仮想環境を無効にするには、deactivateコマンドを実行し元のシステムのPython環境に戻る。

  • 使い方の例は、「Jupyterで」の所に記載した通り。

pyenv

virtualenv(仮想環境)ではなくpythonのバージョンを切り替えを簡単にしてくれるツール。

  • pyenvとvirtualenvを組み合わせて使用し、異なるPythonバージョンを管理しつつ、プロジェクトごとに依存関係を分離できる。
  • さらに、pyenvにはpyenv-virtualenvというプラグインがあり、これを使うと仮想環境の作成と管理がより簡単になる。

venv

  • virtualenv が Python 3.3 から標準機能として取り込まれたもの。
  • 純正なので良いと考えるが、新しいため、情報がまだ少ないのが問題。
  • Ubuntu 24.04から仮想環境が一般的になっている様なので、
    その手順上(WSL2 Ubuntu 24.04 LTS 2025/1/21の該当節を参照)で確認すると良いかも。

pipenv

Pipfile.lock を使うパッケージ・マネージャー的なモノ

  • 以前は、pip + requirements.txtでやっていたらしい。
  • 自動でvenv環境を作成してくれる。
  • パッケージング機能はないらしい。

Poetry

pipenvとの大きな機能の違いは、
パッケージング機能(パッケージのbuild・publish)をサポートしているかどうか。

uv

  • Rust製の 超高速・軽量な pip/venv 代替

  • 利用方法については実利用手順(LangFlowのファースト・ステップとか
    WSL2 Ubuntu 24.04 LTS 2025/1/21の該当節)をご参照のこと。

  • 実際の動作を細かくブレークダウンしてみると

    uv pip install langflow
    uv run langflow run
    
    • uv pip install langflow

      1. 現在のプロジェクトまたは一時環境を特定
      2. LangFlow とその依存パッケージを解決(ロックファイルを生成)
      3. キャッシュ済みのwheelを利用して高速にインストール
      4. ローカル環境に安全に格納(システムPythonを汚さない)
    • uv run langflow run

      1. LangFlow が存在するか確認
      2. なければ自動的にインストール(キャッシュ or PyPI)
      3. 依存環境を整えた上で、仮想的な環境内で langflow を起動

Rye

  • Pythonプロジェクト全体管理を行う上位統合ツール
  • 最近は内部でuvを使う方向に進んでいる。

開発環境

Jupyterで

  • Jupyter&プロジェクト(当該フォルダ以下)構成は相性が悪い(が最近はuvで解決した)ので、

    • 仮想環境中にインストールして仮想環境上で使用するか、
    • 仮想環境のカーネルを選択して利用できるようにする。
  • 以下の例では

    • 仮想環境のカーネルを選択して利用できるようにしている。
    • virtualenv」を使用しているが「venv」でもほぼ同様にできる。
  • 仮想環境(virtualenv

    • virtualenvをインストール

      $ sudo apt install python3-virtualenv
      
    • virtualenvで仮想環境を生成

      $ virtualenv -p python3 myenv
      
    • 作成した仮想環境をアクティブ化

      $ source myenv/bin/activate
      
  • 仮想環境「内」にJupyterをインストールして起動すると「myenv」仮想環境のカーネルを使用する。

    • 仮想環境「内」にJupyterをインストール

      pip install Jupyter
      pip install jupyterlab
      pip install numpy
      pip install pandas
      
    • 仮想環境「内」からJupyterを起動

      jupyter-lab
      
  • 仮想環境「外」からJupyterを起動しても「myenv」仮想環境を選択可能にする。
    (ただし、JupyterLab 上で使うパッケージは、予め仮想環境にインストールしておく必要がある)

    • 仮想環境「内」にipykernelをインストール

      $ pip install ipykernel
      
    • 仮想環境「内」にipythonのkernelをインストール

      $ ipython kernel install --user --name=jupyter-myenv
      
    • 作成した仮想環境を非アクティブ化

      deactivate
      
    • 仮想環境「外」からJupyterを起動

      jupyter-lab
      

VSCode、Cursor

基本的に、Jupyter方式と同じ。

  • ...と言うのも、あくまで、Browser代替のフロントとしてIDE的に使用するだけで、Jupyterに接続して使用するため。
  • WSL経由で接続する場合は、WSLとJupyterのプラグインをインストールしてVSCとWSLを接続後、
    Jupyter ServerのURLを指定して接続(The Complete Agentic AI Engineering Course (2025)の該当節を参照)。

step by step的な

環境構築履歴メモ

復号中継機能付きのプロキシを経由する場合

以下はLinuxを想定しているが、Windowsでも、凡そ同じように設定可能。
(Windows環境のPythonも、Linux発のPythonは、自動的にWindowsのプロキシ設定を使用せず、Linux作法に倣うタメ)

  • 先ずは「プロキシの設定方法」をご参照のこと。

  • 以下「Pythonから」と言うのは、一部、Pythonで使用するパッケージ(具体的には、requests)の証明書ストアが異なるため。

  • 「Python(のrequestsなど)から」復号中継機能付きのプロキシを経由する場合、以下の様に設定する。

    • ルート証明書をダウンロードしプロキシのルート証明書を任意のフォルダに置く。

    • 次の環境変数を設定する

      HTTP_PROXY="http://プロキシのFQDN名とかポート番号とか"
      HTTPS_PROXY="http://プロキシのFQDN名とかポート番号とか"
      REQUESTS_CA_BUNDLE="<任意のフォルダパス>/XXXXX_Root_CA.cer"
      
  • 「Pythonから」復号中継&パススルー機能付きのプロキシを経由する場合、
    単純な設定では、パススルー時にエラーになる可能性があるので、以下の様に設定する。

    • PythonのCA証明書バンドルに、ルート証明書を追加。

      import certifi
      import shutil
      # certifi が提供する CA 証明書バンドル(通常は .pem ファイル)のパスを取得。
      certifi_bundle_path = certifi.where()
      # 元のバンドルに独自証明書を加えた、新しい証明書バンドルの出力先ファイル名。
      new_bundle_path = "combined-ca-bundle.pem"
      # 元の certifi バンドルを、新バンドル・ファイルにコピー(=ベース)。
      shutil.copy(certifi_bundle_path, new_bundle_path)
      # プロキシ提供元から展開されているルート証明書を読込。
      proxy_cer_path = "XXXXX_Root_CA.cer"
      with open(proxy_cer_path, "r") as proxy_cer_file:
          proxy_cer_content = proxy_cer_file.read()
      # 新バンドル・ファイルの末尾に、ルート証明書を追加で書込。
      with open(new_bundle_path, "a+") as new_bundle_file:
          new_bundle_file.write("\n" + proxy_cer_content)
    • .env ファイルを定義する。
      認証プロキシの認証設定(UID/PWD)は不要である模様(コレは当該プロダクトの仕様らしい)。

      HTTP_PROXY="http://プロキシのFQDN名とかポート番号とか"
      HTTPS_PROXY="http://プロキシのFQDN名とかポート番号とか"
      REQUESTS_CA_BUNDLE=combined-ca-bundle.pem
      
    • 環境変数を読み込む。
      REQUESTS_CA_BUNDLEの相対パスを絶対パスに変換

      import dotenv
      import os
      
      # 環境変数を読み込み
      dotenv.load_dotenv()
      # REQUESTS_CA_BUNDLEに絶対パスを設定する。
      os.environ['REQUESTS_CA_BUNDLE'] = os.path.join(
          os.path.dirname(dotenv.find_dotenv()),
          dotenv.dotenv_values()["REQUESTS_CA_BUNDLE"])

参考

(元 Wiki では見出しのみで本文が無い。)

移行メモ

  • 「本項ではPython 3を取り扱ってる。」→「取り扱っている。」、 「仮想環境い(virtualenv)」→「仮想環境(virtualenv)」に修正した。
  • 「step by step的な」「環境構築履歴メモ」配下は本文の無い見出しだったため、 箇条書きにまとめた。
  • マイクロソフト系技術情報 Wiki(techinfoofmicrosofttech.osscons.jp)への URL リンクは、移行済みの Python on Windows に張り替えた。 また [[環境変数の設定方法]] / [[プロキシの設定方法]] は同 Wiki の移行済みページ (環境変数の設定方法 / プロキシの設定方法)を指す。
  • 本フェーズで新たに参照された「LangFlowのファースト・ステップ」を TODO.md に予約した。

Tags: 移行, Python, pip, 仮想環境, venv, virtualenv, uv, Poetry, Jupyter, プロキシ

NetDevInfraWiki

マイクロソフト系技術情報 Wiki
Open 棟梁 Wiki

(未着手)

開発基盤部会 Wiki

移行管理: DONETODO

Clone this wiki locally