-
Notifications
You must be signed in to change notification settings - Fork 0
DNET_Python
- 豊富で大規模な文書
- 本体部分は必要最小限に抑えられている。
- Pythonのリファレンス実装であるCPythonは、OSS。
複数のプログラミングパラダイムに対応している。
- オブジェクト指向
- 命令型
- 手続き型
- 関数型
- 動的型付け
- 参照カウントベースの自動メモリ管理(GC)を持つ。
- さまざまな領域に対応する大規模な標準ライブラリやサードパーティ製の
ライブラリが提供され、本体にない機能はその都度呼び出して使用する。 - 多くのハードウェアとOSに対応(Linux版、Mac版、Win版、32/64bitが存在)
- 2.x 系のバージョンと 3.x 系のバージョンが存在。
- 2.x 系と3.x 系には互換性がない。
Python 2.x はレガシー
- Python 3 が Python 言語の現在と未来
- 本項の執筆時点で、Python 3なので、
本項ではPython 3を取り扱っている。
-
システム標準のモノがインストールされている。
$ 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の該当節を参照)。
-
-
エイリアス設定
Python on Windowsの該当節を参照。
python --version
python -V
python3 --version
python3 -V
直接Pythonコードを入力・実行できる。
-
起動
pythonpython3 -
インタラクティブモード(REPL)
>>> print("こんにちは") こんにちは >>> 2 + 3 5 >>> for i in range(3): ... print(i) ... 0 1
※ 即時実行か?複数行入力後実行か?はPythonが自動的に判断してくれる。
python -c "print('Hello, world!')"
python3 -c "print('Hello, world!')"
python script.py
python3 script.py
システム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) |
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は専用の仮想環境ツールが実装されている(Pythonファースト・ステップの該当節を参照)。
システム全体のPython環境に影響を与えずに、プロジェクトごとに独立したPython仮想環境を構築するためのツール
-
仮想環境を有効にするには、activateスクリプトを実行する。
-
仮想環境内で必要なパッケージをインストールすると、
- 指定したディレクトリにPythonの実行ファイルやライブラリ、pipをコピー
- プロジェクト毎に異なるパッケージやバージョンを使用できる。
-
仮想環境を無効にするには、deactivateコマンドを実行し元のシステムのPython環境に戻る。
-
使い方の例は、「Jupyterで」の所に記載した通り。
virtualenv(仮想環境)ではなくpythonのバージョンを切り替えを簡単にしてくれるツール。
- pyenvとvirtualenvを組み合わせて使用し、異なるPythonバージョンを管理しつつ、プロジェクトごとに依存関係を分離できる。
- さらに、pyenvにはpyenv-virtualenvというプラグインがあり、これを使うと仮想環境の作成と管理がより簡単になる。
- virtualenv が Python 3.3 から標準機能として取り込まれたもの。
- 純正なので良いと考えるが、新しいため、情報がまだ少ないのが問題。
- Ubuntu 24.04から仮想環境が一般的になっている様なので、
その手順上(WSL2 Ubuntu 24.04 LTS 2025/1/21の該当節を参照)で確認すると良いかも。
Pipfile.lock を使うパッケージ・マネージャー的なモノ
- 以前は、pip + requirements.txtでやっていたらしい。
- 自動でvenv環境を作成してくれる。
- パッケージング機能はないらしい。
pipenvとの大きな機能の違いは、
パッケージング機能(パッケージのbuild・publish)をサポートしているかどうか。
-
Rust製の 超高速・軽量な pip/venv 代替
-
利用方法については実利用手順(LangFlowのファースト・ステップとか
WSL2 Ubuntu 24.04 LTS 2025/1/21の該当節)をご参照のこと。 -
実際の動作を細かくブレークダウンしてみると
uv pip install langflow uv run langflow run-
uv pip install langflow- 現在のプロジェクトまたは一時環境を特定
- LangFlow とその依存パッケージを解決(ロックファイルを生成)
- キャッシュ済みのwheelを利用して高速にインストール
- ローカル環境に安全に格納(システムPythonを汚さない)
-
uv run langflow run- LangFlow が存在するか確認
- なければ自動的にインストール(キャッシュ or PyPI)
- 依存環境を整えた上で、仮想的な環境内で langflow を起動
-
- Pythonプロジェクト全体管理を行う上位統合ツール
- 最近は内部でuvを使う方向に進んでいる。
-
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
-
基本的に、Jupyter方式と同じ。
- ...と言うのも、あくまで、Browser代替のフロントとしてIDE的に使用するだけで、Jupyterに接続して使用するため。
- WSL経由で接続する場合は、WSLとJupyterのプラグインをインストールしてVSCとWSLを接続後、
Jupyter ServerのURLを指定して接続(The Complete Agentic AI Engineering Course (2025)の該当節を参照)。
以下は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, プロキシ
このWikiは「Open棟梁Project」,「OSSコンソーシアム 開発基盤部会」によって運営されています。