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

**環境管理 [#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)をサポートしているかどうか。

***Rye、uv [#e22b4457]
殺意を覚えるほど機能が多いので[[利用時>WSL2 Ubuntu 24.04 LTS 2025/1/21#t65c0b95]]に個別説明

***Jupyterで [#j9edb499]
-Jupyterとプロジェクト(フォルダ構成)は相性が悪いので、カーネルだけを切り替えられるようにする。

-以下の例では「[[virtualenv>#ke6b003a]]」を使用しているが「[[venv>#id8b0d17]]」でもほぼ同様に使用できる。

-[[virtualenv>#ke6b003a]]をインストール
 $ sudo apt install python3-virtualenv

-[[virtualenv>#ke6b003a]]で仮想環境を生成
 $ virtualenv -p python3 myenv

-作成した仮想環境をアクティブ化
 $ source myenv/bin/activate

-仮想環境「内」からJupyterを起動すると「myenv」仮想環境のカーネルを使用する。
-仮想環境「内」からJupyterを起動すると~
「myenv」仮想環境のカーネルを使用する。

--Jupyterを起動
--仮想環境「内」からJupyterを起動
 jupyter-lab 

-仮想環境「外」からJupyterを起動しても「myenv」仮想環境を選択可能にする。
-仮想環境「外」からJupyterを起動しても~
「myenv」仮想環境を選択可能にする。

--作成した仮想環境を非アクティブ化
 deactivate

--仮想環境にipykernelをインストール
--仮想環境「内」にipykernelをインストール
 $ pip install ipykernel

--ipythonのkernelをインストール
--仮想環境「内」にipythonのkernelをインストール
 $ ipython kernel install --user --name=jupyter-myenv

--Jupyterを起動
--作成した仮想環境を非アクティブ化
 deactivate

--仮想環境「外」からJupyterを起動
 jupyter-lab 

**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のプロキシ設定を使用しない)

-Pythonから復号中継機能付きのプロキシを経由する場合、以下の様に設定する。

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

--次の環境変数を設定する
 HTTP_PROXY="http://umproxy.prx.intra.hitachi.co.jp:8080"
 HTTPS_PROXY="http://umproxy.prx.intra.hitachi.co.jp:8080"
 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 ファイルを定義する。
 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