これは、Python for Win32 (pywin32) 拡張機能の Readme であり、Python から多くの Windows API へのアクセスを提供します。
最近の注目すべき変更点については、CHANGES.txt を参照してください。
ドキュメントは長くて悲しい話ですが、インストーラーに同梱されているヘルプファイルのオンライン バージョンが提供されています (@ofek に感謝します!)。その多くは非常に古いものですが、自動生成された最新のものもあります。ドキュメントのもつれを解くお手伝いをしたいと思います!
pywin32 のすべてのバグ (またはバグの疑い) については、自由に問題をオープンしてください。すべてのバグや機能についてのプルリクエストも歓迎です。
ただし、一般的なサポート リクエスト、またはこのパッケージのモジュールを使用した問題や質問については、github の問題を開かないでください。それらは閉じられます。このような問題については、python-win32 メーリング リストに電子メールを送信してください。投稿する前にリストに登録する必要があることに注意してください。
バイナリ リリースはサポートされなくなりました。
ビルド 306 は、.exe インストーラーを備えた最後のものでした。本来は使用すべきではありませんが、本当に必要な場合は、ここで見つけてください。
pip 経由で pywin32 をインストールする必要があります。たとえば、
python -m pip install --upgrade pywin32
仮想環境内で実行すべきではないインストール後のスクリプト (以下を参照) があります。 「グローバル」インストールでのみ実行する必要があります。
未リリースの変更については、github アクションによって作成されたビルドをダウンロードできます ( main
ブランチから任意の「ワークフロー」を選択し、その「アーティファクト」をダウンロードします)。
仮想環境の外に、COM オブジェクト、サービスなどをインストールすることができます。これを実行するには、次のコマンドを実行します。
python Scripts/pywin32_postinstall.py -install
Python インストールのルートから。
これを通常のアクセス許可で実行すると、ユーザーに対してグローバルになります (いくつかのファイルが Python インストールのルートにコピーされ、HKCU にいくつかの変更が加えられます)。これを昇格されたプロセスから実行すると、マシンに対してグローバルになります (ファイルは System32 にコピーされ、HKLM は変更されます)。
サービスとして実行するには、おそらく管理者特権のコマンド プロンプトから pywin32 をグローバルにインストールする必要があります (上記を参照)。
また、サービスを実行しているユーザーがインストールにアクセスでき、 pywintypesXX.dll
およびpythonXX.dll
をロードできる場所に Python がインストールされていることを確認する必要もあります。特に、 LocalSystem
アカウントは通常、ローカルの%USER%
ディレクトリ構造にアクセスできません。
アップグレード中に次のような問題が発生した場合:
The specified procedure could not be found
Entry-point not found
通常、次の 2 つのいずれかを意味します。
インストール後スクリプトが以前に実行されたインストールをアップグレードしました。したがって、もう一度実行する必要があります。
python Scripts/pywin32_postinstall.py -install
これにより、競合する古いインストールをクリーンアップする小さな試みがいくつか行われます。
システムには他の pywin32 DLL がインストールされていますが、新しい DLL とは異なる場所にインストールされています。これは、pywin32 が事前に同梱されている環境 (anaconda など) で時々発生します。
ここで考えられる解決策は次のとおりです。
pywintypesXX.dll
およびpythoncomXX.dll
の他のすべてのコピーを見つけて削除します ( XX
は Python のバージョンです - 例: "39") Visual Studio 2019 をインストールし (後で動作すると思われますが、オプションが異なる場合があります)、インストールするバージョンの「ビルド環境」の手順に従います。
(無料のコンパイラもおそらく動作しますが、テストされていません。あなたの経験を教えてください。)
setup.py
は標準の distutils ビルド スクリプトなので、おそらく次のものが必要になります。
python setup.py install
または
python setup.py --help
一部のモジュールは、ビルドに不明瞭な SDK を必要とします。setup.py setup.py
成功し、ビルドに失敗した理由を丁寧に通知するはずです。実際に構成でビルドが失敗した場合は、問題を開いてください。
新しいリリースを作成するときに次の手順が実行されます。これは主に、@mhammond が何をすべきかを忘れないようにチェックリストを作成するためです:)
ビルド 307 以降、リリース プロセスは Github アクションによって作成されたアーティファクトに基づいています。
CHANGES.txt に注目すべき内容がすべて含まれていることを確認してください。ヘッダーを更新して、リリース予定のビルドと日付を反映し、コミットします。
setup.py を新しいビルド番号で更新します。 CHANGES.txt を更新して、次の未リリース バージョンの新しい見出しセクションを追加します。 (つまり、新しい空の「ビルド XXX で登場、まだリリースされていません」セクション)
これらの変更を github にプッシュし、アクションが完了するのを待ってから、その実行からアーティファクトをダウンロードします。
.whl アーティファクトを pypi にアップロードします。無効なREADME.md
により拒否される可能性があるため、タグをプッシュする前にこれを行います。 py -3.? -m twine upload dist/*XXX*.whl
。
リリース用に新しい git タグを作成します。
今後のテスト ビルドが実際のリリースと間違われないように、setup.py を新しいビルド番号 + ".1" (例: 123.1) で更新します。
タグを含めてすべてが GitHub にプッシュされていることを確認してください (つまり、 git push --tags
)
python-win32 にメールを送信する
これは、ローカル開発環境を使用してビルドを作成したときに使用される古いプロセスです。ビルド 306 は、このプロセスで最後にリリースされました。
CHANGES.txt に注目すべき内容がすべて含まれていることを確認してください。ヘッダーを更新して、リリース予定のビルドと日付を反映し、コミットします。
setup.py を新しいビルド番号で更新します。
make_all.bat
を実行し、永遠に待機して、アーティファクトをテストします。
.whl アーティファクトを pypi にアップロードします。無効なREADME.md
により拒否される可能性があるため、タグをプッシュする前にこれを行います。 py -3.? -m twine upload dist/*XXX*.whl
。
setup.py をコミットし (新しいビルド番号がリポジトリ内にあるように)、新しい git タグを作成します。
.exe インストーラーを github にアップロードします。
今後のテスト ビルドが実際のリリースと間違われないように、setup.py を新しいビルド番号 + ".1" (例: 123.1) で更新します。
タグを含めてすべてが GitHub にプッシュされていることを確認してください (つまり、 git push --tags
)
python-win32 にメールを送信する