「[[.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]

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS