3. WindowsでのPythonの使用—Pythonドキュメント

提供:Dev Guides
< PythonPython/docs/3.8/using/windows
移動先:案内検索

3.3。 WindowsでPythonを使用する

このドキュメントは、MicrosoftWindowsでPythonを使用するときに知っておく必要のあるWindows固有の動作の概要を説明することを目的としています。

ほとんどのUnixシステムおよびサービスとは異なり、WindowsにはシステムでサポートされているPythonのインストールは含まれていません。 Pythonを利用できるようにするために、CPythonチームは長年にわたってリリースごとにWindowsインストーラー(MSIパッケージ)をコンパイルしてきました。 これらのインストーラーは、主にPythonのユーザーごとのインストールを追加することを目的としており、コアインタープリターとライブラリーは単一のユーザーによって使用されます。 インストーラーは、単一のマシンのすべてのユーザーにインストールすることもでき、アプリケーションローカル配布用に別のZIPファイルを使用できます。

PEP 11 で指定されているように、PythonリリースはWindowsプラットフォームのみをサポートしますが、Microsoftはプラットフォームを拡張サポート下にあると見なします。 これは、PythonがWindowsVista以降をサポートしていることを意味します。 Windows XPのサポートが必要な場合は、Python3.4をインストールしてください。

Windowsにはさまざまなインストーラーがあり、それぞれに特定の長所と短所があります。

フルインストーラーにはすべてのコンポーネントが含まれており、あらゆる種類のプロジェクトでPythonを使用する開発者にとって最適なオプションです。

Microsoft Storeパッケージは、スクリプトとパッケージの実行、およびIDLEまたはその他の開発環境の使用に適したPythonの簡単なインストールです。 Windows 10が必要ですが、他のプログラムを破損することなく安全にインストールできます。 また、Pythonとそのツールを起動するための多くの便利なコマンドも提供します。

nuget.orgパッケージは、継続的インテグレーションシステムを対象とした軽量のインストールです。 Pythonパッケージのビルドやスクリプトの実行に使用できますが、更新可能ではなく、ユーザーインターフェイスツールもありません。

埋め込み可能パッケージは、より大きなアプリケーションへの埋め込みに適したPythonの最小限のパッケージです。

3.1。 完全なインストーラー

3.1.1。 インストール手順

4つのPythonインストーラーをダウンロードできます(32ビットバージョンと64ビットバージョンのインタープリターにそれぞれ2つ)。 Webインストーラーは小さな初期ダウンロードであり、必要に応じて必要なコンポーネントを自動的にダウンロードします。 オフラインインストーラーには、デフォルトのインストールに必要なコンポーネントが含まれており、オプション機能にはインターネット接続のみが必要です。 インストール中にダウンロードしないようにする他の方法については、ダウンロードせずにインストールするを参照してください。

インストーラーの起動後、次の2つのオプションのいずれかを選択できます。

../_images/win_installer.png 「今すぐインストール」を選択した場合:

  • 管理者である必要はありません(Cランタイムライブラリのシステムアップデートが必要な場合、またはすべてのユーザーに Python Launcher for Windows をインストールする場合を除く)
  • Pythonがユーザーディレクトリにインストールされます
  • Python Launcher for Windows は、最初のページの下部にあるオプションに従ってインストールされます
  • 標準ライブラリ、テストスイート、ランチャー、pipがインストールされます
  • 選択すると、インストールディレクトリが PATHに追加されます。
  • ショートカットは現在のユーザーにのみ表示されます

「インストールのカスタマイズ」を選択すると、インストールする機能、インストール場所、その他のオプション、またはインストール後のアクションを選択できます。 デバッグシンボルまたはバイナリをインストールするには、このオプションを使用する必要があります。

全ユーザーインストールを実行するには、「インストールのカスタマイズ」を選択する必要があります。 この場合:

  • 管理者の資格情報または承認の提供が必要になる場合があります
  • PythonはProgramFilesディレクトリにインストールされます
  • Python Launcher for Windows がWindowsディレクトリにインストールされます
  • インストール中にオプション機能を選択できます
  • 標準ライブラリはバイトコードにプリコンパイルできます
  • 選択すると、インストールディレクトリがシステムに追加されます PATH
  • ショートカットはすべてのユーザーが利用できます


3.1.2。 MAX_PATH制限の削除

Windowsはこれまで、パスの長さを260文字に制限してきました。 これは、これより長いパスは解決されず、エラーが発生することを意味しました。

最新バージョンのWindowsでは、この制限は約32,000文字に拡張できます。 管理者は、「Win32ロングパスを有効にする」グループポリシーを有効にするか、レジストリキーHKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FileSystemLongPathsEnabled1に設定する必要があります。

これにより、 open()関数、 os モジュール、およびその他のほとんどのパス機能で、260文字を超えるパスを受け入れて返すことができます。

上記のオプションを変更した後は、それ以上の構成は必要ありません。

バージョン3.6で変更: Pythonで長いパスのサポートが有効になりました。


3.1.3。 UIなしでインストール

インストーラーUIで使用可能なすべてのオプションは、コマンドラインからも指定できるため、スクリプト化されたインストーラーは、ユーザーの操作なしで多くのマシンにインストールを複製できます。 これらのオプションは、デフォルトの一部を変更するために、UIを抑制せずに設定することもできます。

インストーラーUIを完全に非表示にしてPythonをサイレントインストールするには、/quietオプションを渡します。 ユーザーインタラクションをスキップしても進行状況とエラーを表示するには、/passiveオプションを渡します。 /uninstallオプションを渡すと、Pythonの削除をすぐに開始できます。プロンプトは表示されません。

他のすべてのオプションはname=valueとして渡されます。値は通常、機能を無効にする場合は0、機能またはパスを有効にする場合は1です。 利用可能なオプションの完全なリストを以下に示します。

名前 説明 ディフォルト
InstallAllUsers システム全体のインストールを実行します。 0
TargetDir インストールディレクトリ InstallAllUsersに基づいて選択
DefaultAllUsersTargetDir 全ユーザーインストールのデフォルトのインストールディレクトリ %ProgramFiles%\Python X.Yまたは%ProgramFiles(x86)%\Python X.Y
DefaultJustForMeTargetDir ジャストフォーミーインストールのデフォルトのインストールディレクトリ %LocalAppData%\Programs\PythonXYまたは%LocalAppData%\Programs\PythonXY-32または%LocalAppData%\Programs\PythonXY-64
DefaultCustomTargetDir UIに表示されるデフォルトのカスタムインストールディレクトリ (空の)
AssociateFiles ランチャーもインストールされている場合は、ファイルの関連付けを作成します。 1
CompileAll すべての.pyファイルを.pycにコンパイルします。 0
PrependPath インストールディレクトリとスクリプトディレクトリを PATHに追加します。.PY PATHEXTに追加します。 0
ショートカット インストールされている場合は、インタープリター、ドキュメント、およびIDLEのショートカットを作成します。 1
Include_doc Pythonマニュアルをインストールする 1
Include_debug デバッグバイナリをインストールする 0
Include_dev 開発者ヘッダーとライブラリをインストールする 1
Include_exe python.exeおよび関連ファイルをインストールします 1
Include_launcher Python Launcher for Windows をインストールします。 1
InstallLauncherAllUsers すべてのユーザーに Python Launcher for Windows をインストールします。 1
Include_lib 標準ライブラリと拡張モジュールをインストールします 1
Include_pip バンドルされたpipとsetuptoolsをインストールします 1
Include_symbols デバッグシンボルをインストールします( * .pdb) 0
Include_tcltk Tcl / TkサポートとIDLEをインストールします 1
Include_test 標準ライブラリテストスイートをインストールする 1
Include_tools ユーティリティスクリプトをインストールする 1
LauncherOnly ランチャーのみをインストールします。 これにより、他のほとんどのオプションが上書きされます。 0
SimpleInstall ほとんどのインストールUIを無効にする 0
SimpleInstallDescription 簡易インストールUIを使用したときに表示されるカスタムメッセージ。 (空の)

たとえば、デフォルトのシステム全体のPythonインストールをサイレントインストールするには、次のコマンドを使用できます(管理者特権のコマンドプロンプトから)。

python-3.8.0.exe /quiet InstallAllUsers=1 PrependPath=1 Include_test=0

ユーザーがテストスイートなしでPythonの個人用コピーを簡単にインストールできるようにするには、次のコマンドでショートカットを提供できます。 これにより、簡略化された初期ページが表示され、カスタマイズが許可されなくなります。

python-3.8.0.exe InstallAllUsers=0 Include_launcher=0 Include_test=0
    SimpleInstall=1 SimpleInstallDescription="Just for me, no test suite."

(ランチャーを省略するとファイルの関連付けも省略されることに注意してください。ランチャーを含むシステム全体のインストールもある場合は、ユーザーごとのインストールにのみお勧めします。)

上記のオプションは、実行可能ファイルと一緒にunattend.xmlという名前のファイルで提供することもできます。 このファイルは、オプションと値のリストを指定します。 値が属性として指定されている場合、可能であれば数値に変換されます。 要素テキストとして提供される値は、常に文字列として残されます。 このサンプルファイルは、前の例と同じオプションを設定します。

<Options>
    <Option Name="InstallAllUsers" Value="no" />
    <Option Name="Include_launcher" Value="0" />
    <Option Name="Include_test" Value="no" />
    <Option Name="SimpleInstall" Value="yes" />
    <Option Name="SimpleInstallDescription">Just for me, no test suite</Option>
</Options>

3.1.4。 ダウンロードせずにインストールする

Pythonの一部の機能は最初のインストーラーのダウンロードに含まれていないため、これらの機能を選択するにはインターネット接続が必要になる場合があります。 この必要性を回避するために、すべての可能なコンポーネントをオンデマンドでダウンロードして、選択した機能に関係なくインターネット接続を必要としない完全なレイアウトを作成できます。 このダウンロードは必要以上に大きくなる可能性がありますが、多数のインストールを実行する場合は、ローカルにキャッシュされたコピーがあると非常に便利です。

コマンドプロンプトから次のコマンドを実行して、必要なすべてのファイルをダウンロードします。 インストーラーの実際の名前をpython-3.8.0.exeに置き換え、同じ名前のファイル間の衝突を避けるために、独自のディレクトリにレイアウトを作成することを忘れないでください。

python-3.8.0.exe /layout [optional target directory]

/quietオプションを指定して、進行状況の表示を非表示にすることもできます。


3.1.5。 インストールの変更

Pythonをインストールしたら、Windowsの一部であるプログラムと機能ツールを使用して機能を追加または削除できます。 Pythonエントリを選択し、「アンインストール/変更」を選択して、インストーラーをメンテナンスモードで開きます。

「変更」を使用すると、チェックボックスを変更して機能を追加または削除できます。変更されていないチェックボックスでは、何もインストールまたは削除されません。 インストールディレクトリなど、このモードでは変更できないオプションもあります。 これらを変更するには、Pythonを完全に削除してから再インストールする必要があります。

「修復」は、現在の設定を使用してインストールする必要があるすべてのファイルを確認し、削除または変更されたファイルを置き換えます。

「アンインストール」は、プログラムと機能に独自のエントリがある Python Launcher for Windows を除いて、Pythonを完全に削除します。


3.2。 MicrosoftStoreパッケージ

バージョン3.7.2の新機能。


Microsoft Storeパッケージは、簡単にインストールできるPythonインタープリターであり、主に学生などによるインタラクティブな使用を目的としています。

パッケージをインストールするには、最新のWindows 10アップデートがあることを確認し、MicrosoftStoreアプリで「Python」を検索します。 選択したアプリがPythonSoftware Foundationによって公開されていることを確認し、インストールします。

警告

Pythonは、Microsoftストアでいつでも無料で入手できます。 支払いを求められた場合は、正しいパッケージを選択していません。


インストール後、PythonはStartで見つけることで起動できます。 または、pythonと入力すると、コマンドプロンプトまたはPowerShellセッションから利用できます。 さらに、pipまたはidleと入力すると、pipおよびIDLEを使用できます。 IDLEはスタートにもあります。

3つのコマンドはすべて、バージョン番号のサフィックスを付けて使用することもできます。たとえば、python3.exepython3.x.exepython.exe3.xは特定のバージョンです)などです。などを起動したい。 [スタート]から[アプリ実行エイリアスの管理]を開き、各コマンドに関連付けるPythonのバージョンを選択します。 pipおよびidleが、選択されているpythonのバージョンと一致していることを確認することをお勧めします。

仮想環境はpython -m venvで作成し、通常どおりアクティブ化して使用できます。

別のバージョンのPythonをインストールし、それをPATH変数に追加した場合、MicrosoftStoreからのものではなくpython.exeとして入手できます。 新規インストールにアクセスするには、python3.exeまたはpython3.x.exeを使用します。

py.exeランチャーはこのPythonインストールを検出しますが、従来のインストーラーからのインストールを優先します。

Pythonを削除するには、[設定]を開いて[アプリと機能]を使用するか、[スタート]で[Python]を見つけて右クリックし、[アンインストール]を選択します。 アンインストールすると、このPythonインストールに直接インストールしたすべてのパッケージが削除されますが、仮想環境は削除されません。

3.2.1。 既知の問題点

Microsoft Storeアプリの制限により、Pythonスクリプトは、TEMPやレジストリなどの共有場所への完全な書き込みアクセス権を持っていない場合があります。 代わりに、プライベートコピーに書き込みます。 スクリプトで共有の場所を変更する必要がある場合は、完全なインストーラーをインストールする必要があります。

これらの制限の技術的根拠の詳細については、パッケージ化された完全信頼アプリに関するMicrosoftのドキュメントを参照してください。現在、 docs.microsoft.com/en-us/windows/msix/desktop/desktop-to-uwp-で入手できます。舞台裏


3.3。 nuget.orgパッケージ

バージョン3.5.2の新機能。


nuget.orgパッケージは、Pythonがシステム全体にインストールされていない継続的インテグレーションおよびビルドシステムでの使用を目的とした、サイズが縮小されたPython環境です。 nugetは「.NETのパッケージマネージャー」ですが、ビルド時ツールを含むパッケージでも完全に機能します。

nugetの使用に関する最新情報については、 nuget.org にアクセスしてください。 以下は、Python開発者にとって十分な要約です。

nuget.exeコマンドラインツールは、たとえばcurlまたはPowerShellを使用して、https://aka.ms/nugetclidlから直接ダウンロードできます。 このツールを使用すると、64ビットまたは32ビットマシン用の最新バージョンのPythonが次のコマンドを使用してインストールされます。

nuget.exe install python -ExcludeVersion -OutputDirectory .
nuget.exe install pythonx86 -ExcludeVersion -OutputDirectory .

特定のバージョンを選択するには、-Version 3.x.yを追加します。 出力ディレクトリは.から変更される可能性があり、パッケージはサブディレクトリにインストールされます。 デフォルトでは、サブディレクトリの名前はパッケージと同じであり、-ExcludeVersionオプションがない場合、この名前にはインストールされている特定のバージョンが含まれます。 サブディレクトリ内には、Pythonインストールを含むtoolsディレクトリがあります。

# Without -ExcludeVersion
> .\python.3.5.2\tools\python.exe -V
Python 3.5.2

# With -ExcludeVersion
> .\python\tools\python.exe -V
Python 3.5.2

一般に、nugetパッケージはアップグレードできません。新しいバージョンを並べてインストールし、フルパスを使用して参照する必要があります。 または、パッケージディレクトリを手動で削除して、再度インストールします。 多くのCIシステムは、ビルド間でファイルを保持しない場合、これを自動的に実行します。

toolsディレクトリの横には、build\nativeディレクトリがあります。 これには、Pythonインストールを参照するためにC ++プロジェクトで使用できるMSBuildプロパティファイルpython.propsが含まれています。 設定を含めると、ビルドでヘッダーとインポートライブラリが自動的に使用されます。

nuget.orgのパッケージ情報ページは、64ビットバージョンの場合は www.nuget.org/packages/python 、32ビットバージョンの場合は www.nuget.org/packages/pythonx86です。ビットバージョン。


3.4。 埋め込み可能なパッケージ

バージョン3.5の新機能。


埋め込まれたディストリビューションは、最小限のPython環境を含むZIPファイルです。 エンドユーザーが直接アクセスするのではなく、別のアプリケーションの一部として機能することを目的としています。

埋め込まれたディストリビューションは、抽出されると、環境変数、システムレジストリ設定、インストールされたパッケージなど、ユーザーのシステムから(ほぼ)完全に分離されます。 標準ライブラリは、コンパイル済みで最適化された.pycファイルとしてZIPに含まれ、python3.dllpython37.dllpython.exepythonw.exeに含まれています。すべて提供されます。 Tcl / tk(Idleなどのすべての依存関係を含む)、pip、およびPythonドキュメントは含まれていません。

ノート

組み込みディストリビューションには Microsoft Cランタイムは含まれていません。これを提供するのは、アプリケーションインストーラーの責任です。 ランタイムは、以前にユーザーのシステムに既にインストールされているか、Windows Updateを介して自動的にインストールされている可能性があり、システムディレクトリでucrtbase.dllを見つけることで検出できます。


ノート

Windows 7で実行している場合、Python3.8ではKB2533623更新プログラムをインストールする必要があります。 埋め込み可能なディストリビューションはこの更新を検出せず、実行時に失敗する可能性があります。 それ以降のバージョンのWindowsには、この更新プログラムが含まれています。


サードパーティのパッケージは、組み込みディストリビューションと一緒にアプリケーションインストーラーによってインストールする必要があります。 通常のPythonインストールのようにpipを使用して依存関係を管理することは、このディストリビューションではサポートされていませんが、注意して自動更新にpipを含めて使用できる場合があります。 一般に、サードパーティのパッケージはアプリケーションの一部(「ベンダー」)として扱われる必要があります。これにより、開発者はユーザーに更新を提供する前に、新しいバージョンとの互換性を確保できます。

このディストリビューションの2つの推奨されるユースケースを以下に説明します。

3.4.1。 Pythonアプリケーション

Pythonで記述されたアプリケーションは、必ずしもユーザーがその事実を認識する必要はありません。 この場合、組み込みディストリビューションを使用して、プライベートバージョンのPythonをインストールパッケージに含めることができます。 それがどれだけ透明であるべきか(または逆に、それがどれほど専門的に見えるべきか)に応じて、2つのオプションがあります。

専用の実行可能ファイルをランチャーとして使用するには、ある程度のコーディングが必要ですが、ユーザーに最も透過的なエクスペリエンスを提供します。 カスタマイズされたランチャーでは、プログラムがPythonで実行されていることを明確に示すことはできません。アイコンをカスタマイズしたり、会社やバージョンの情報を指定したり、ファイルの関連付けを適切に実行したりできます。 ほとんどの場合、カスタムランチャーはハードコードされたコマンドラインでPy_Mainを呼び出すことができるはずです。

より簡単なアプローチは、必要なコマンドライン引数を使用してpython.exeまたはpythonw.exeを直接呼び出すバッチファイルまたは生成されたショートカットを提供することです。 この場合、アプリケーションは実際の名前ではなくPythonであるように見え、ユーザーは他の実行中のPythonプロセスまたはファイルの関連付けと区別するのに問題がある可能性があります。

後者のアプローチでは、パッケージをPython実行可能ファイルと一緒にディレクトリとしてインストールして、パスで確実に使用できるようにする必要があります。 専用のランチャーを使用すると、アプリケーションを起動する前に検索パスを指定できるため、パッケージを他の場所に配置できます。


3.4.2。 Pythonの埋め込み

ネイティブコードで記述されたアプリケーションは、多くの場合、何らかの形式のスクリプト言語を必要とし、埋め込まれたPythonディストリビューションをこの目的に使用できます。 一般に、アプリケーションの大部分はネイティブコードであり、一部はpython.exeを呼び出すか、python3.dllを直接使用します。 いずれの場合も、埋め込みディストリビューションをアプリケーションインストールのサブディレクトリに抽出するだけで、ロード可能なPythonインタープリターを提供できます。

アプリケーションの使用と同様に、インタープリターを初期化する前に検索パスを指定する機会があるため、パッケージは任意の場所にインストールできます。 それ以外の場合、組み込みディストリビューションの使用と通常のインストールの間に基本的な違いはありません。


3.5。 代替バンドル

標準のCPythonディストリビューションに加えて、追加機能を含む変更されたパッケージがあります。 以下は、人気のあるバージョンとその主な機能のリストです。

ActivePython
マルチプラットフォーム互換性のあるインストーラー、ドキュメント、PyWin32
アナコンダ
人気のある科学モジュール(numpy、scipy、pandasなど)とcondaパッケージマネージャー。
キャノピー
エディターやその他の開発ツールを備えた「包括的なPython分析環境」。
WinPython
ビルド済みの科学パッケージとパッケージをビルドするためのツールを備えたWindows固有のディストリビューション。

これらのパッケージには、最新バージョンのPythonまたはその他のライブラリが含まれていない可能性があり、コアPythonチームによって維持またはサポートされていないことに注意してください。


3.6。 Pythonの構成

コマンドプロンプトからPythonを便利に実行するには、Windowsでいくつかのデフォルトの環境変数を変更することを検討してください。 インストーラーはPATH変数とPATHEXT変数を構成するオプションを提供しますが、これは単一のシステム全体のインストールに対してのみ信頼できます。 複数のバージョンのPythonを定期的に使用する場合は、 Python Launcher for Windows の使用を検討してください。

3.6.1。 Excursus:環境変数の設定

Windowsでは、環境変数をユーザーレベルとシステムレベルの両方で永続的に構成することも、コマンドプロンプトで一時的に構成することもできます。

環境変数を一時的に設定するには、コマンドプロンプトを開き、 set コマンドを使用します。

C:\>set PATH=C:\Program Files\Python 3.8;%PATH%
C:\>set PYTHONPATH=%PYTHONPATH%;C:\My_python_lib
C:\>python

これらの変更は、そのコンソールで実行される以降のコマンドに適用され、コンソールから起動されたすべてのアプリケーションに継承されます。

パーセント記号内に変数名を含めると、既存の値に拡張され、開始時または終了時に新しい値を追加できるようになります。 python.exe を含むディレクトリを先頭に追加して PATHを変更することは、正しいバージョンのPythonが起動されるようにするための一般的な方法です。

デフォルトの環境変数を永続的に変更するには、[スタート]をクリックして[環境変数の編集]を検索するか、[システムプロパティ]、 [システムの詳細設定] を開き、 [環境変数] ボタンをクリックします。 このダイアログでは、ユーザー変数とシステム変数を追加または変更できます。 システム変数を変更するには、マシンへの無制限のアクセスが必要です(つまり、 管理者権限)。

ノート

Windowsは、ユーザー変数 after システム変数を連結します。これにより、 PATHを変更したときに予期しない結果が生じる可能性があります。

PYTHONPATH 変数はPython2およびPython3のすべてのバージョンで使用されるため、インストールされているすべてのPythonバージョンと互換性のあるコードのみが含まれている場合を除き、この変数を永続的に構成しないでください。 。


も参照してください

https://www.microsoft.com/en-us/wdsi/help/folder-variables
WindowsNTの環境変数
https://technet.microsoft.com/en-us/library/cc754250.aspx
環境変数を一時的に変更するためのSETコマンド
https://technet.microsoft.com/en-us/library/cc755104.aspx
環境変数を永続的に変更するためのSETXコマンド
https://support.microsoft.com/en-us/help/310519/how-to-manage-environment-variables-in-windows-xp
WindowsXPで環境変数を管理する方法
https://www.chem.gla.ac.uk/~louis/software/faq/q1.html
環境変数の設定、LouisJ。 ファルギア


3.6.2。 Python実行可能ファイルの検索

バージョン3.5で変更されました。


Pythonインタープリター用に自動的に作成されたスタートメニューエントリを使用する以外に、コマンドプロンプトでPythonを起動することもできます。 インストーラーには、それを設定するオプションがあります。

インストーラーの最初のページで、「PythonをPATHに追加」というラベルの付いたオプションを選択して、インストーラーにインストール場所を PATHに追加させることができます。 Scripts\フォルダーの場所も追加されます。 これにより、 python と入力してインタープリターを実行し、 pip と入力してパッケージインストーラーを実行できます。 したがって、コマンドラインオプションを使用してスクリプトを実行することもできます。コマンドラインのドキュメントを参照してください。

インストール時にこのオプションを有効にしない場合は、いつでもインストーラーを再実行し、[変更]を選択して有効にすることができます。 または、 Excursus:環境変数の設定の指示に従って、 PATHを手動で変更することもできます。 PATH環境変数を設定して、他のエントリからセミコロンで区切られたPythonインストールのディレクトリを含める必要があります。 変数の例は次のようになります(最初の2つのエントリがすでに存在していると仮定)。

C:\WINDOWS\system32;C:\WINDOWS;C:\Program Files\Python 3.8

3.7。 UTF-8モード

バージョン3.7の新機能。


Windowsは、システムエンコーディング(ANSIコードページ)にレガシーエンコーディングを引き続き使用します。 Pythonは、テキストファイルのデフォルトのエンコーディングにこれを使用します(例: locale.getpreferredencoding())。

UTF-8はインターネットや、WSL(Windows Subsystem for Linux)を含むほとんどのUnixシステムで広く使用されているため、これにより問題が発生する可能性があります。

UTF-8モードを使用して、デフォルトのテキストエンコーディングをUTF-8に変更できます。 -X utf8コマンドラインオプション、またはPYTHONUTF8=1環境変数を使用して、UTF-8モードを有効にできます。 UTF-8モードの有効化については PYTHONUTF8 を、環境変数の変更方法については Excursus:環境変数の設定を参照してください。

UTF-8モードが有効になっている場合:

  • locale.getpreferredencoding()は、システムエンコーディングの代わりに'UTF-8'を返します。 この関数は、 open()PopenPath.read_text()など、多くの場所でデフォルトのテキストエンコーディングに使用されます。
  • sys.stdinsys.stdout 、および sys.stderr はすべて、テキストエンコーディングとしてUTF-8を使用します。
  • 「mbcs」コーデックを介してシステムエンコーディングを引き続き使用できます。

PYTHONUTF8=1をデフォルトの環境変数に追加すると、システム上のすべてのPython3.7以降のアプリケーションに影響することに注意してください。 レガシーシステムエンコーディングに依存するPython3.7以降のアプリケーションがある場合は、環境変数を一時的に設定するか、-X utf8コマンドラインオプションを使用することをお勧めします。

ノート

UTF-8モードが無効になっている場合でも、PythonはWindowsでデフォルトでUTF-8を次の目的で使用します。

  • 標準I / Oを含むコンソールI / O(詳細については、 PEP 528 を参照してください)。
  • ファイルシステムのエンコーディング(詳細については、 PEP 529 を参照してください)。


3.8。 Windows用のPythonランチャー

バージョン3.3の新機能。


Windows用のPythonランチャーは、さまざまなPythonバージョンの検索と実行を支援するユーティリティです。 スクリプト(またはコマンドライン)が特定のPythonバージョンの設定を示すことができ、そのバージョンを見つけて実行します。

PATH変数とは異なり、ランチャーはPythonの最も適切なバージョンを正しく選択します。 システム全体のインストールよりもユーザーごとのインストールを優先し、最後にインストールされたバージョンを使用するのではなく、言語バージョンごとに注文します。

ランチャーは元々 PEP 397 で指定されていました。

3.8.1。 入門

3.8.1.1。 コマンドラインから

バージョン3.6で変更されました。


Python 3.3以降をシステム全体にインストールすると、ランチャーが PATHに配置されます。 ランチャーは利用可能なすべてのバージョンのPythonと互換性があるため、どのバージョンがインストールされているかは関係ありません。 ランチャーが使用可能であることを確認するには、コマンドプロンプトで次のコマンドを実行します。

py

インストールしたPythonの最新バージョンが開始されていることがわかります。通常どおり終了でき、指定された追加のコマンドライン引数はPythonに直接送信されます。

Pythonの複数のバージョン(2.7やなど)がインストールされている場合は、Pythonが開始されていることに気付くでしょう。Python2.7を起動するには、次のコマンドを試してください。

py -2.7

インストールしたPython2.xの最新バージョンが必要な場合は、次のコマンドを試してください。

py -2

Python2.xの最新バージョンが起動するはずです。

次のエラーが表示された場合は、ランチャーがインストールされていません。

'py' is not recognized as an internal or external command,
operable program or batch file.

Pythonのユーザーごとのインストールでは、インストール時にオプションが選択されていない限り、ランチャーが PATHに追加されません。


3.8.1.2。 仮想環境

バージョン3.5の新機能。


ランチャーが明示的なPythonバージョン仕様なしで実行され、仮想環境(標準ライブラリ venv モジュールまたは外部virtualenvツールで作成)がアクティブな場合、ランチャーは仮想環境のグローバルではなくインタプリタ。 グローバルインタープリターを実行するには、仮想環境を非アクティブ化するか、グローバルPythonバージョンを明示的に指定します。


3.8.1.3。 スクリプトから

テストPythonスクリプトを作成しましょう-次の内容のhello.pyというファイルを作成します

#! python
import sys
sys.stdout.write("hello from Python %s\n" % (sys.version,))

hello.pyが存在するディレクトリから、次のコマンドを実行します。

py hello.py

最新のPython2.xインストールのバージョン番号が出力されていることに注意してください。 ここで、最初の行を次のように変更してみてください。

#! python3

コマンドを再実行すると、最新のPython3.x情報が出力されるはずです。 上記のコマンドラインの例と同様に、より明示的なバージョン修飾子を指定できます。 Python 2.6がインストールされていると仮定して、最初の行を#! python2.6に変更してみると、2.6のバージョン情報が出力されているはずです。

インタラクティブな使用とは異なり、裸の「python」は、インストールした最新バージョンのPython2.xを使用することに注意してください。 これは、下位互換性とUnixとの互換性のためであり、コマンドpythonは通常Python2を参照します。


3.8.1.4。 ファイルの関連付けから

ランチャーはPythonファイルに関連付けられている必要があります(つまり .py.pyw.pycファイル)がインストールされたとき。 これは、Windowsエクスプローラーからこれらのファイルの1つをダブルクリックすると、ランチャーが使用されることを意味します。したがって、上記と同じ機能を使用して、使用するバージョンをスクリプトに指定させることができます。

これの主な利点は、最初の行の内容に応じて、単一のランチャーが同時に複数のPythonバージョンをサポートできることです。


3.8.2。 シバンライン

スクリプトファイルの最初の行が#!で始まる場合、それは「シバン」行と呼ばれます。 Linuxおよびその他のUnixライクなオペレーティングシステムは、このような行をネイティブでサポートしており、スクリプトの実行方法を示すために、このようなシステムで一般的に使用されています。 このランチャーを使用すると、Windows上のPythonスクリプトで同じ機能を使用でき、上記の例でその使用法を示します。

Pythonスクリプトのシバン行をUnixとWindows間で移植できるようにするために、このランチャーは、使用するインタープリターを指定するための多数の「仮想」コマンドをサポートしています。 サポートされている仮想コマンドは次のとおりです。

  • /usr/bin/env python
  • /usr/bin/python
  • /usr/local/bin/python
  • python

たとえば、スクリプトの最初の行がで始まる場合

#! /usr/bin/python

デフォルトのPythonが検索され、使用されます。 Unixで動作するように記述された多くのPythonスクリプトにはすでにこの行が含まれているため、これらのスクリプトはランチャーで変更せずに使用できることがわかります。 Unixで役立つことを期待する新しいスクリプトをWindowsで作成している場合は、/usrで始まるシバン行の1つを使用する必要があります。

上記の仮想コマンドには、明示的なバージョン(メジャーバージョンのみ、またはメジャーバージョンとマイナーバージョンのいずれか)を追加できます。 さらに、マイナーバージョンの後に「-32」を追加することで、32ビットバージョンをリクエストできます。 NS /usr/bin/python2.7-32は、32ビットのPython2.7の使用を要求します。

バージョン3.7の新機能: python launcher 3.7以降、「-64」サフィックスで64ビットバージョンをリクエストできます。 さらに、マイナーなしでメジャーとアーキテクチャを指定することが可能です(つまり /usr/bin/python3-64)。


/usr/bin/env形式のシバンラインには、もう1つの特別な特性があります。 インストールされているPythonインタープリターを探す前に、このフォームは実行可能ファイル PATHでPython実行可能ファイルを検索します。 これは、 PATH検索を実行するUnix envプログラムの動作に対応しています。


3.8.3。 シバンラインの引数

シバン行は、Pythonインタープリターに渡される追加のオプションを指定することもできます。 たとえば、シバンラインがある場合:

#! /usr/bin/python -v

次に、Pythonは-vオプションで起動されます


3.8.4。 カスタマイズ

3.8.4.1。 INIファイルによるカスタマイズ

2つの.iniファイルがランチャーによって検索されます-py.ini現在のユーザーの「アプリケーションデータ」ディレクトリ(つまり、 ランチャーと同じディレクトリにあるCSIDL_LOCAL_APPDATA)およびpy.iniを使用してWindows関数SHGetFolderPathを呼び出すことによって返されるディレクトリ。 同じ.iniファイルがランチャーの「コンソール」バージョンの両方に使用されます(つまり、 py.exe)および「windows」バージョン(つまり pyw.exe)。

「アプリケーションディレクトリ」で指定されたカスタマイズは、実行可能ファイルの隣のカスタマイズよりも優先されるため、ランチャーの隣の.iniファイルへの書き込みアクセス権を持たないユーザーは、そのグローバル.iniファイルのコマンドを上書きできます。


3.8.4.2。 デフォルトのPythonバージョンのカスタマイズ

場合によっては、バージョン修飾子をコマンドに含めて、コマンドで使用するPythonのバージョンを指定できます。 バージョン修飾子はメジャーバージョン番号で始まり、オプションでピリオド( '。')とマイナーバージョン指定子を続けることができます。 さらに、「-32」または「-64」を追加することにより、32ビットまたは64ビットの実装を要求するかどうかを指定できます。

たとえば、#!pythonのシバン行にはバージョン修飾子がありませんが、#!python3にはメジャーバージョンのみを指定するバージョン修飾子があります。

コマンドにバージョン修飾子が見つからない場合は、環境変数 PY_PYTHONを設定して、デフォルトのバージョン修飾子を指定できます。 設定されていない場合、デフォルトは「3」です。 変数は、「3」、「3.7」、「3.7-32」、「3.7-64」など、コマンドラインで渡すことができる任意の値を指定できます。 (「-64」オプションは、Python 3.7以降に含まれているランチャーでのみ使用できることに注意してください。)

マイナーバージョン修飾子が見つからない場合は、環境変数PY_PYTHON{major}{major}は上記で決定された現在のメジャーバージョン修飾子)を設定して、フルバージョンを指定できます。 そのようなオプションが見つからない場合、ランチャーはインストールされているPythonバージョンを列挙し、メジャーバージョンで見つかった最新のマイナーリリースを使用します。これは、保証はされていませんが、そのファミリで最後にインストールされたバージョンである可能性があります。

同じ(major.minor)Pythonバージョンの32ビットと64ビットの両方の実装がインストールされている64ビットWindowsでは、64ビットバージョンが常に優先されます。 これは、ランチャーの32ビットと64ビットの両方の実装に当てはまります。32ビットランチャーは、可能な場合は、指定されたバージョンの64ビットPythonインストールを実行することを好みます。 これは、PCにインストールされているバージョンのみを知り、インストールされた順序に関係なく(つまり、32ビットバージョンまたは64ビットバージョンのPythonと対応するランチャーがあったかどうかを知らなくても)ランチャーの動作を予測できるようにするためです。最後にインストールされました)。 上記のように、オプションの「-32」または「-64」サフィックスをバージョン指定子で使用して、この動作を変更できます。

例:

  • 関連するオプションが設定されていない場合、コマンドpythonおよびpython2はインストールされている最新のPython2.xバージョンを使用し、コマンドpython3はインストールされている最新のPython3.xを使用します。
  • コマンドpython3.1およびpython2.7は、バージョンが完全に指定されているため、オプションをまったく参照しません。
  • PY_PYTHON=3の場合、コマンドpythonpython3はどちらも、インストールされている最新のPython3バージョンを使用します。
  • PY_PYTHON=3.1-32の場合、コマンドpythonは3.1の32ビット実装を使用しますが、コマンドpython3は最新のインストール済みPythonを使用します(PY_PYTHONはメジャーとはまったく見なされませんでした)バージョンが指定されました。)
  • PY_PYTHON=3PY_PYTHON3=3.1の場合、コマンドpythonpython3はどちらも特に3.1を使用します

環境変数に加えて、ランチャーが使用する.INIファイルでも同じ設定を構成できます。 INIファイルのセクションは[defaults]と呼ばれ、キー名は環境変数と同じですが、先頭にPY_プレフィックスが付いていません(INIファイルのキー名では大文字と小文字が区別されないことに注意してください)。 。)環境変数の内容は、INIファイルで指定されたものを上書きします。

例えば:

  • PY_PYTHON=3.1の設定は、以下を含むINIファイルと同等です。
[defaults]
python=3.1
  • PY_PYTHON=3およびPY_PYTHON3=3.1の設定は、以下を含むINIファイルと同等です。
[defaults]
python=3
python3=3.1

3.8.5。 診断

環境変数PYLAUNCH_DEBUGが(任意の値に)設定されている場合、ランチャーは診断情報をstderrに出力します(つまり、 コンソールに)。 この情報はの簡潔さを同時に表すことができますが、Pythonのどのバージョンが見つかったか、特定のバージョンが選択された理由、ターゲットPythonの実行に使用された正確なコマンドラインを確認できるはずです。


3.9。 モジュールの検索

Pythonは通常、そのライブラリ(したがって、site-packagesフォルダー)をインストールディレクトリに保存します。 したがって、PythonをC:\Python\にインストールした場合、デフォルトのライブラリはC:\Python\Lib\にあり、サードパーティのモジュールはC:\Python\Lib\site-packages\に保存する必要があります。

sys.path を完全に上書きするには、DLL(python37._pth)または実行可能ファイル(python._pth)と同じ名前の._pthファイルを作成して指定します。 sys.path に追加するパスごとに1行。 DLL名に基づくファイルは、実行可能ファイルに基づくファイルをオーバーライドします。これにより、必要に応じて、ランタイムをロードするプログラムのパスを制限できます。

ファイルが存在する場合、すべてのレジストリ変数と環境変数が無視され、分離モードが有効になり、ファイル内の1行でimport siteが指定されていない限り、サイトはインポートされません。 #で始まる空白のパスと行は無視されます。 各パスは、絶対パスでも、ファイルの場所からの相対パスでもかまいません。 site以外のインポートステートメントは許可されておらず、任意のコードを指定することはできません。

import siteが指定されている場合、.pthファイル(先頭にアンダースコアなし)はサイトモジュールによって通常どおり処理されることに注意してください。

._pthファイルが見つからない場合、Windowsで sys.path が入力される方法は次のとおりです。

  • 現在のディレクトリに対応する空のエントリが先頭に追加されます。
  • 環境変数で説明されているように、環境変数 PYTHONPATH が存在する場合、そのエントリが次に追加されます。 Windowsでは、ドライブ識別子(C:\など)で使用されるコロンと区別するために、この変数のパスはセミコロンで区切る必要があることに注意してください。
  • 追加の「アプリケーションパス」は、HKEY_CURRENT_USERHKEY_LOCAL_MACHINEの両方のハイブの下にある\SOFTWARE\Python\PythonCore{version}\PythonPathのサブキーとしてレジストリに追加できます。 デフォルト値としてセミコロンで区切られたパス文字列を持つサブキーにより、各パスが sys.path に追加されます。 (すべての既知のインストーラーはHKLMのみを使用するため、HKCUは通常空であることに注意してください。)
  • 環境変数 PYTHONHOME が設定されている場合は、「Pythonホーム」と見なされます。 それ以外の場合は、メインのPython実行可能ファイルのパスを使用して「ランドマークファイル」(Lib\os.pyまたはpythonXY.zip)を見つけ、「Pythonホーム」を推測します。 Pythonホームが見つかった場合、 sys.path に追加された関連するサブディレクトリ(Libplat-winなど)はそのフォルダーに基づいています。 それ以外の場合、コアPythonパスは、レジストリに格納されているPythonPathから構築されます。
  • Pythonホームが見つからない場合、環境で PYTHONPATH が指定されておらず、レジストリエントリが見つからない場合は、相対エントリを含むデフォルトのパスが使用されます(例: .\Lib;.\plat-winなど)。

pyvenv.cfgファイルがメインの実行可能ファイルと並んで、または実行可能ファイルの1レベル上のディレクトリにある場合、次のバリエーションが適用されます。

  • homeが絶対パスで、 PYTHONHOME が設定されていない場合、ホームの場所を推測するときに、メインの実行可能ファイルへのパスの代わりにこのパスが使用されます。

このすべての最終結果は次のとおりです。

  • python.exeまたはその他の.exeをメインのPythonディレクトリ(インストールされているバージョン、またはPCbuildディレクトリから直接)で実行すると、コアパスが推定され、レジストリ内のコアパスは無視されます。 レジストリ内の他の「アプリケーションパス」は常に読み取られます。
  • Pythonが別の.exe(別のディレクトリ、COM経由で埋め込まれているなど)でホストされている場合、「Pythonホーム」は推定されないため、レジストリからのコアパスが使用されます。 レジストリ内の他の「アプリケーションパス」は常に読み取られます。
  • Pythonがホームを見つけることができず、レジストリ値がない場合(.exeの凍結、非常に奇妙なインストールセットアップ)、デフォルトの相対パスを持つパスを取得します。

Pythonをアプリケーションまたはディストリビューションにバンドルしたい場合は、次のアドバイスにより、他のインストールとの競合を防ぐことができます。

  • 含めるディレクトリを含む実行可能ファイルと一緒に._pthファイルを含めます。 これにより、レジストリ変数と環境変数にリストされているパスが無視され、import siteがリストされていない限り、サイトも無視されます。
  • 独自の実行可能ファイルにpython3.dllまたはpython37.dllをロードする場合は、の前に Py_SetPath()または(少なくとも) Py_SetProgramName()を明示的に呼び出します。 ] Py_Initialize()。
  • アプリケーションからpython.exeを起動する前に、 PYTHONPATH をクリアまたは上書きし、 PYTHONHOME を設定してください。
  • 以前の提案を使用できない場合(たとえば、ユーザーがpython.exeを直接実行できるディストリビューションである場合)、ランドマークファイル(Lib\os.py)がインストールディレクトリに存在することを確認してください。 (ZIPファイル内では検出されませんが、代わりに正しい名前のZIPファイルが検出されることに注意してください。)

これらにより、システム全体のインストール内のファイルが、アプリケーションにバンドルされている標準ライブラリのコピーよりも優先されなくなります。 そうしないと、ユーザーがアプリケーションの使用で問題を経験する可能性があります。 他の提案はレジストリおよびユーザーサイトパッケージ内の非標準パスの影響を受けやすい可能性があるため、最初の提案が最善であることに注意してください。

バージョン3.6で変更:

  • ._pthファイルのサポートを追加し、pyvenv.cfgからapplocalオプションを削除します。
  • 実行可能ファイルに直接隣接している場合、潜在的なランドマークとしてpythonXX.zipを追加します。


バージョン3.6以降非推奨:

ModulesPythonPathではない)の下のレジストリで指定されたモジュールは、 importlib.machinery.WindowsRegistryFinder によってインポートできます。 このファインダーは、3.6.0以前のWindowsで有効になっていますが、将来、 sys.meta_path に明示的に追加する必要がある可能性があります。


3.10。 追加モジュール

Pythonはすべてのプラットフォーム間での移植性を目指していますが、Windowsに固有の機能があります。 これらの機能を使用するために、標準ライブラリと外部ライブラリの両方にいくつかのモジュールとスニペットが存在します。

Windows固有の標準モジュールは、 MSWindows固有のサービスに記載されています。

3.10.1。 PyWin32

MarkHammondによる PyWin32 モジュールは、高度なWindows固有のサポートのためのモジュールのコレクションです。 これには、次のユーティリティが含まれます。

PythonWin は、PyWin32に同梱されているサンプルMFCアプリケーションです。 これは、デバッガーが組み込まれた組み込み可能なIDEです。

も参照してください

Win32どうすれば…?
ティム・ゴールデン
PythonとCOM
DavidとPaulBoddieによる


3.10.2。 cx_Freeze

cx_Freezedistutils 拡張機能( Extended Distutils を参照)であり、Pythonスクリプトを実行可能Windowsプログラム(*.exeファイル)にラップします。 これを行うと、ユーザーがPythonをインストールしなくても、アプリケーションを配布できます。


3.10.3。 WConio

Pythonの高度な端末処理レイヤー curses はUnixライクなシステムに制限されているため、Windows専用のライブラリもあります。Python用のWindowsコンソールI / Oです。

WConio は、Turbo-CのCONIO.Hのラッパーであり、テキストユーザーインターフェイスの作成に使用されます。


3.11。 WindowsでのPythonのコンパイル

CPythonを自分でコンパイルしたい場合、最初にすべきことは source を入手することです。 最新リリースのソースをダウンロードするか、新しいチェックアウトを入手することができます。

ソースツリーには、公式のPythonリリースのビルドに使用されるコンパイラであるMicrosoft Visual Studio2015のビルドソリューションとプロジェクトファイルが含まれています。 これらのファイルはPCbuildディレクトリにあります。

ビルドプロセスの一般的な情報については、PCbuild/readme.txtを確認してください。

拡張モジュールについては、 WindowsでのCおよびC ++拡張機能の構築を参照してください。

も参照してください

Python + Windows + distutils + SWIG + gcc MinGW
または「SWIGを使用してC / C ++でPython拡張機能を作成し、WindowsでMinGW gccを使用してコンパイルする」または「distutilsを使用してMicrosoft Visual C ++を使用せずにPython拡張機能をインストールする」(SébastienSauvage、2003年)


3.12。 その他のプラットフォーム

Pythonの継続的な開発により、以前はサポートされていた一部のプラットフォームがサポートされなくなりました(ユーザーまたは開発者が不足しているため)。 サポートされていないすべてのプラットフォームの詳細については、 PEP 11 を確認してください。

プリコンパイルされたインストーラーを備えたプラットフォームの詳細については、 Python for Windows を参照してください。