這是 Python for Win32 (pywin32) 擴充功能的自述文件,它提供了從 Python 存取許多 Windows API 的權限。
請參閱 CHANGES.txt 以了解最近的顯著變更。
這些文件是一個漫長而悲傷的故事,但現在有一個隨安裝程式附帶的幫助文件的線上版本(感謝@ofek!)。其中很多都是非常古老的,但有些是自動生成的並且是最新的。希望能幫助您理清文件!
請隨意針對 pywin32 中的所有錯誤(或可疑錯誤)提出問題。也歡迎針對所有錯誤或功能提出拉請求。
但是,請不要針對一般支援請求或使用此套件中的模組的問題或問題開啟 github 問題- 它們將被關閉。對於此類問題,請向 python-win32 郵件清單發送電子郵件 - 請注意,在發布之前您必須訂閱該清單。
不再支援二進位版本。
Build 306 是最後一個有 .exe 安裝程式的版本。您確實不應該使用它們,但如果您確實需要它們,請在這裡找到它們
您應該透過 pip 安裝 pywin32 - 例如,
python -m pip install --upgrade pywin32
有一個安裝後腳本(見下文)不應在虛擬環境中運行;它應該只在“全域”安裝中運行。
對於未發布的更改,您可以下載 github actions 所做的建置 - 從main
分支中選擇任何「工作流程」並下載其「工件」)
在虛擬環境之外,您可能想要安裝 COM 物件、服務等。
python Scripts/pywin32_postinstall.py -install
從 Python 安裝的根目錄。
如果您使用普通權限執行此操作,則這對您的使用者來說將是全域性的(某些檔案將複製到 Python 安裝的根目錄,並對 HKCU 進行一些更改)。如果您從提升的進程執行此操作,則它將是機器的全域操作(檔案將複製到 System32、HKLM 將被更改等)
要作為服務運行,您可能需要從提升的命令提示字元全域安裝 pywin32 - 請參閱上文。
您還需要確保 Python 安裝在執行服務的使用者有權存取安裝並且能夠載入pywintypesXX.dll
和pythonXX.dll
位置。特別是, LocalSystem
帳戶通常無權存取本機%USER%
目錄結構。
如果您在升級過程中遇到以下問題:
The specified procedure could not be found
Entry-point not found
它通常意味著以下兩件事之一:
您已經升級了先前執行過安裝後腳本的安裝。所以你應該再次運行它:
python Scripts/pywin32_postinstall.py -install
這將進行一些小的嘗試來清理舊的衝突安裝。
您的系統中也安裝了其他 pywin32 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
應該成功,並優雅地告訴您為什麼建置失敗 - 如果建置實際上因您的配置而失敗,請提出問題。
製作新版本時執行以下步驟 - 這主要是為了形成一個清單,這樣 @mhammond 就不會忘記要做什麼:)
自建置 307 以來,發布流程是基於 Github 操作所建立的工件。
確保 CHANGES.txt 包含所有值得注意的內容。更新標頭以反映即將發布的版本和日期,然後提交。
使用新的內部版本號更新 setup.py。更新 CHANGES.txt 為下一個未發布版本提供新的標題部分。 (即,一個新的、空的「即將在版本 XXX 中推出,尚未發布」部分)
將這些變更推送到 github,等待操作完成,然後從該運行中下載工件。
將 .whl 工件上傳到 pypi - 我們在推送標籤之前執行此操作,因為它們可能會因無效README.md
而被拒絕。透過py -3.? -m twine upload dist/*XXX*.whl
。
為發佈建立一個新的 git 標籤。
使用新的內部版本號 +“.1”(例如 123.1)更新 setup.py,以確保未來的測試版本不會被誤認為是真正的版本。
確保所有內容都推送到 github,包括標籤(即git push --tags
)
發送郵件到 python-win32
這是使用本機開發環境建立建置時使用的舊流程。 Build 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。
使用新的內部版本號 +“.1”(例如 123.1)更新 setup.py,以確保未來的測試版本不會被誤認為是真正的版本。
確保所有內容都推送到 github,包括標籤(即git push --tags
)
發送郵件到 python-win32