「[[.NET 開発基盤部会 Wiki>http://dotnetdevelopmentinfrastructure.osscons.jp]]」は、「[[Open棟梁Project>https://github.com/OpenTouryoProject/]]」,「[[OSSコンソーシアム .NET開発基盤部会>https://www.osscons.jp/dotNetDevelopmentInfrastructure/]]」によって運営されています。 -[[戻る>深層学習(deep learning)]] *目次 [#baf5c8d2] #contents *概要 [#h004167c] -豊富で大規模な文書 -本体部分は必要最小限に抑えられている。 -Pythonのリファレンス実装であるCPythonは、OSS。 **特徴 [#n1646095] ***言語 [#abcd69f2] 複数のプログラミングパラダイムに対応している。 -オブジェクト指向 -命令型 -手続き型 -関数型 -動的型付け ***実装 [#k1d972c6] -参照カウントベースの自動メモリ管理(GC)を持つ。 -さまざまな領域に対応する大規模な標準ライブラリやサードパーティ製の~ ライブラリが提供され、本体にない機能はその都度呼び出して使用する。 -多くのハードウェアとOSに対応(Linux版、Mac版、Win版、32/64bitが存在) **バージョン [#cccd6779] -2.x 系のバージョンと 3.x 系のバージョンが存在。 -2.x 系と3.x 系には互換性がない。 ***Python 2 [#z2093a3d] Python 2.x はレガシー ***Python 3 [#i785d5c1] -Python 3 が Python 言語の現在と未来 -本項の執筆時点で、Python 3なので、~ 本項ではPython 3を取り扱ってる。 *詳細 [#u68fe019] **インストール [#va75989e] ***Linux [#rdeb4b17] -システム標準のモノがインストールされている。 $ 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#l5db1fb1]] ---別バージョンをインストールできないなら:[[仮想環境>#q0c50a8d]]の技術を使用する([[venv>#id8b0d17]]を使うのが一般的)。 -エイリアス設定 --[[設定ファイル>環境変数の設定方法#y590800f]]を開く。 vim ~/.bashrc --以下のコードを最後の行に追加(操作は[[vi]]と同じ) alias python="python3" alias pip="pip3" --保存したら、sourceする。 source ~/.bashrc ***[[Windows>https://techinfoofmicrosofttech.osscons.jp/index.php?Python%20on%20Windows#ge0e1b3c]] [#w9682eff] **基本操作(python) [#k0f72db4] ***pythonのバージョン確認 [#m1f5eca4] - python --version - python -V - python3 --version - python3 -V ***pythonの起動 [#xaa47aa1] インタラクティブモード(REPL)が起動し、直接Pythonコードを入力・実行できる。 ***pythonのインタラクティブモード(REPL) [#xaa47aa1] 直接Pythonコードを入力・実行できる。 -起動 -- python -- python3 -インタラクティブモード(REPL) >>> print("こんにちは") こんにちは >>> 2 + 3 5 >>> for i in range(3): ... print(i) ... 0 1 ※ 即時実行か?複数行入力後実行か?はPythonが自動的に判断してくれる。 ***簡単なpythonコードの一行実行 [#bb04f46d] - python -c "print('Hello, world!')" - python3 -c "print('Hello, world!')" ***pythonスクリプト・ファイルの実行 [#md046001] - python script.py - python3 script.py **基本操作(pip) [#md319810] ***パッケージのインストール [#m6609633] システムPythonと別のPythonをインストールしたり、[[仮想環境>#q0c50a8d]]を切ってから実行する方が安全 - pip install パッケージ名 - pip install パッケージ名==バージョン ***パッケージのアップグレード [#h2ec00b1] pip install --upgrade パッケージ名 ***パッケージのアンインストール [#u8fe504c] pip uninstall パッケージ名 ***インストール済みパッケージの確認 [#b1c5b4c0] pip list ***特定インストール済みパッケージの情報表示 [#f8f3163f] pip show パッケージ名 ***依存関係を含めたインストール [#eea283af] - pip install パッケージ名[extra] -よく使われるパッケージと extra の例 |パッケージ名|extraの例|説明|h |fastapi|all, dev, docs|開発・ドキュメント関連| |requests|security, socks|SSL強化やSOCKSプロキシ対応| |pandas|performance|高速化ライブラリ(例:numba)| ***requirements.txt から一括インストール [#y24fd93c] - pip install -r requirements.txt -requirements.txtの作成方法 --現在の環境から自動生成する pip freeze > requirements.txt --以下の様に手動で作成する numpy==1.21.0 pandas>=1.3.0 requests matplotlib<=3.4.3 **仮想環境 [#q0c50a8d] ***[[Anaconda>Pythonファースト・ステップ#o0176db3]] [#s7874a86] Anacondaは専用の[[仮想環境>#q0c50a8d]]ツールが実装されている。 ***virtualenv [#ke6b003a] システム全体のPython環境に影響を与えずに、プロジェクトごとに独立したPython仮想環境を構築するためのツール -仮想環境を有効にするには、activateスクリプトを実行する。 -仮想環境内で必要なパッケージをインストールすると、 --指定したディレクトリにPythonの実行ファイルやライブラリ、pipをコピー --プロジェクト毎に異なるパッケージやバージョンを使用できる。 -仮想環境を無効にするには、deactivateコマンドを実行し元のシステムのPython環境に戻る。 -使い方の例は、「[[Jupyterで>#j9edb499]]」の所に記載した通り。 ***pyenv [#t457e431] [[virtualenv(仮想環境)>#ke6b003a]]ではなくpythonのバージョンを切り替えを簡単にしてくれるツール。 -pyenvと[[virtualenv>#ke6b003a]]を組み合わせて使用し、異なるPythonバージョンを管理しつつ、プロジェクトごとに依存関係を分離できる。 -さらに、pyenvにはpyenv-virtualenvというプラグインがあり、これを使うと仮想環境の作成と管理がより簡単になる。 ***venv [#id8b0d17] -[[virtualenv>#ke6b003a]] が Python 3.3 から標準機能として取り込まれたもの。 -純正なので良いと考えるが、新しいため、情報がまだ少ないのが問題。 -Ubuntu 24.04から仮想環境が一般的になっている様なので、[[その手順上>WSL2 Ubuntu 24.04 LTS 2025/1/21#m8a520c5]]で確認すると良いかも。 ***pipenv [#wf3de977] Pipfile.lock を使うパッケージ・マネージャー的なモノ -以前は、pip + requirements.txtでやっていたらしい。 -自動でvenv環境を作成してくれる。 -パッケージング機能はないらしい。 ***Poetry [#h7d723e5] [[pipenv>#wf3de977]]との大きな機能の違いは、~ パッケージング機能(パッケージのbuild・publish)をサポートしているかどうか。 ***uv [#e22b4457] -Rust製の 超高速・軽量な pip/venv 代替 -利用方法については実利用手順([[ココ>LangFlowのファースト・ステップ#q84225ef]]とか[[ココ>WSL2 Ubuntu 24.04 LTS 2025/1/21#t65c0b95]])をご参照のこと。 -実際の動作を細かくブレークダウンしてみると uv pip install langflow uv run langflow run --uv pip install langflow > +現在のプロジェクトまたは一時環境を特定 +LangFlow とその依存パッケージを解決(ロックファイルを生成) +キャッシュ済みのwheelを利用して高速にインストール +ローカル環境に安全に格納(システムPythonを汚さない) --uv run langflow run > +LangFlow が存在するか確認 +なければ自動的にインストール(キャッシュ or PyPI) +依存環境を整えた上で、仮想的な環境内で langflow を起動 ***Rye [#v61f9592] -Pythonプロジェクト全体管理を行う上位統合ツール -最近は内部で[[uv>#e22b4457]]を使う方向に進んでいる。 **開発環境 [#vd07d68b] ***Jupyterで [#j9edb499] -Jupyter&プロジェクト(当該フォルダ以下)構成は相性が悪い(が最近は[[uv>#e22b4457]]で解決した)ので、 --仮想環境中にインストールして仮想環境上で使用するか、 --仮想環境のカーネルを選択して利用できるようにする。 -以下の例では --仮想環境のカーネルを選択して利用できるようにしている。 --「[[virtualenv>#ke6b003a]]」を使用しているが「[[venv>#id8b0d17]]」でもほぼ同様にできる。 -仮想環境い([[virtualenv>#ke6b003a]]) --[[virtualenv>#ke6b003a]]をインストール $ sudo apt install python3-virtualenv --[[virtualenv>#ke6b003a]]で仮想環境を生成 $ 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 [#s79685e3] 基本的に、[[Jupyter方式>#j9edb499]]と同じ。 -...と言うのも、あくまで、Browser代替のフロントとしてIDE的に使用するだけで、Jupyterに接続して使用するため。 -[[WSL経由で接続する場合は、WSLとJupyterのプラグインをインストールしてVSCとWSLを接続後、Jupyter ServerのURLを指定して接続。>The Complete Agentic AI Engineering Course (2025)#ea76807c]] **step by step的な [#pc5ae908] ***[[ファースト・ステップ>Pythonファースト・ステップ]] [#v4af3ac8] ***[[セカンド・ステップ>Pythonセカンド・ステップ]] [#v2a70cb9] ***[[サード・ステップ>Pythonサード・ステップ]] [#b1e4534c] **環境構築履歴メモ [#la989816] ***[[WSL2 Ubuntu 24.04 LTS 2025/1/21]] [#sd14ca9a] ***[[Ubuntu 24.04 on Azure via Bastion 2025/2/27]] [#x66ad889] ***復号中継機能付きのプロキシを経由する場合 [#y9ac7218] 以下は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"]) *参考 [#dce6bed8]