Ini adalah readme untuk ekstensi Python untuk Win32 (pywin32), yang menyediakan akses ke banyak Windows API dari Python.
Lihat CHANGES.txt untuk mengetahui perubahan penting terkini.
Dokumennya memiliki cerita yang panjang dan menyedihkan, tetapi sekarang ada versi online dari file bantuan yang dikirimkan bersama penginstal (terima kasih @ofek!). Banyak di antaranya yang sudah sangat tua, namun ada pula yang dihasilkan secara otomatis dan terkini. Ingin sekali membantu menguraikan dokumen!
Jangan ragu untuk membuka masalah untuk semua bug (atau dugaan bug) di pywin32. permintaan tarik untuk semua bug atau fitur juga diterima.
Namun, mohon jangan membuka masalah github untuk permintaan dukungan umum , atau untuk masalah atau pertanyaan menggunakan modul dalam paket ini - semuanya akan ditutup. Untuk masalah seperti itu, silakan kirim email ke milis python-win32 - perhatikan bahwa Anda harus berlangganan daftar tersebut sebelum memposting.
Rilis biner tidak lagi didukung.
Build 306 adalah yang terakhir dengan penginstal .exe. Anda sebaiknya tidak menggunakannya, tetapi jika Anda benar-benar membutuhkannya, temukan di sini
Anda harus menginstal pywin32 melalui pip - misalnya,
python -m pip install --upgrade pywin32
Ada skrip pasca-instal (lihat di bawah) yang tidak boleh dijalankan di dalam lingkungan virtual; itu hanya boleh dijalankan di instalasi "global".
Untuk perubahan yang belum dirilis, Anda dapat mengunduh build yang dibuat oleh tindakan github - pilih "alur kerja" apa pun dari cabang main
dan unduh "artefak") -nya
Di luar lingkungan virtual Anda mungkin ingin menginstal objek COM, layanan, dll. Anda dapat melakukannya dengan menjalankan:
python Scripts/pywin32_postinstall.py -install
Dari root instalasi Python Anda.
Jika Anda melakukan ini dengan izin normal, ini akan bersifat global untuk pengguna Anda (beberapa file akan disalin ke root instalasi Python Anda dan beberapa perubahan dilakukan pada HKCU). Jika Anda menjalankan ini dari proses yang ditinggikan, ini akan bersifat global untuk mesin (file akan disalin ke System32, HKLM akan diubah, dll)
Untuk dijalankan sebagai layanan, Anda mungkin ingin menginstal pywin32 secara global dari command prompt yang ditinggikan - lihat di atas.
Anda juga perlu memastikan Python diinstal di lokasi di mana pengguna yang menjalankan layanan memiliki akses ke instalasi dan dapat memuat pywintypesXX.dll
dan pythonXX.dll
. Secara khusus, akun LocalSystem
biasanya tidak memiliki akses ke struktur direktori %USER%
lokal Anda.
Jika Anda menemui masalah saat melakukan upgrade seperti berikut:
The specified procedure could not be found
Entry-point not found
Biasanya berarti salah satu dari 2 hal:
Anda telah meningkatkan versi instalasi yang sebelumnya menjalankan skrip pasca-instalasi. Jadi, Anda harus menjalankannya lagi:
python Scripts/pywin32_postinstall.py -install
Ini akan melakukan beberapa upaya kecil untuk membersihkan instalasi lama yang bertentangan.
Ada DLL pywin32 lain yang terinstal di sistem Anda, tetapi di lokasi yang berbeda dari yang baru. Hal ini terkadang terjadi di lingkungan yang dilengkapi dengan pywin32 yang sudah dikirimkan sebelumnya (misalnya, anaconda?).
Solusi yang mungkin ada di sini adalah:
pywintypesXX.dll
dan pythoncomXX.dll
(dengan XX
adalah versi Python - misalnya, "39") Instal Visual Studio 2019 (nantinya mungkin berfungsi, tetapi opsinya mungkin berbeda), ikuti petunjuk di Lingkungan build untuk versi yang Anda instal.
(kompiler gratis mungkin juga berfungsi, tetapi belum diuji - beri tahu saya pengalaman Anda!)
setup.py
adalah skrip pembuatan distutils standar, jadi Anda mungkin ingin:
python setup.py install
atau
python setup.py --help
Beberapa modul memerlukan SDK yang tidak jelas untuk dibangun - setup.py
akan berhasil, dengan baik hati memberi tahu Anda mengapa gagal membangunnya - jika pembangunan benar-benar gagal dengan konfigurasi Anda, silakan buka masalah.
Langkah-langkah berikut dilakukan ketika membuat rilis baru - ini terutama untuk membentuk checklist agar @mhammond tidak lupa apa yang harus dilakukan :)
Sejak build 307, proses rilis didasarkan pada artefak yang dibuat oleh tindakan Github.
Pastikan CHANGES.txt memiliki semua yang perlu diperhatikan. Perbarui header untuk mencerminkan versi dan tanggal yang akan dirilis, komit.
Perbarui setup.py dengan nomor build baru. Perbarui CHANGES.txt agar memiliki bagian judul baru untuk versi yang belum dirilis berikutnya. (yaitu, bagian baru yang kosong, "Akan hadir dalam versi XXX, namun belum dirilis")
Dorong perubahan ini ke github, tunggu hingga tindakan selesai, lalu unduh artefak dari proses tersebut.
Unggah artefak .whl ke pypi - kami melakukan ini sebelum memasukkan tag karena artefak tersebut mungkin ditolak karena README.md
yang tidak valid. Selesai melalui py -3.? -m twine upload dist/*XXX*.whl
.
Buat tag git baru untuk rilis.
Perbarui setup.py dengan nomor build baru + ".1" (misalnya, 123.1), untuk memastikan build pengujian di masa mendatang tidak disalahartikan sebagai rilis sebenarnya.
Pastikan semuanya didorong ke github, termasuk tag (yaitu, git push --tags
)
Kirim email ke python-win32
Ini adalah proses lama yang digunakan ketika lingkungan pengembang lokal digunakan untuk membuat build. Build 306 adalah yang terakhir dirilis dengan proses ini.
Pastikan CHANGES.txt memiliki semua yang perlu diperhatikan. Perbarui header untuk mencerminkan versi dan tanggal yang akan dirilis, komit.
Perbarui setup.py dengan nomor build baru.
Jalankan make_all.bat
, tunggu selamanya, uji artefaknya.
Unggah artefak .whl ke pypi - kami melakukan ini sebelum memasukkan tag karena artefak tersebut mungkin ditolak karena README.md
yang tidak valid. Selesai melalui py -3.? -m twine upload dist/*XXX*.whl
.
Komit setup.py (sehingga nomor build baru ada di repo), buat tag git baru
Unggah penginstal .exe ke github.
Perbarui setup.py dengan nomor build baru + ".1" (misalnya, 123.1), untuk memastikan build pengujian di masa mendatang tidak disalahartikan sebagai rilis sebenarnya.
Pastikan semuanya didorong ke github, termasuk tag (yaitu, git push --tags
)
Kirim email ke python-win32