นี่คือ readme สำหรับส่วนขยาย Python สำหรับ Win32 (pywin32) ซึ่งให้การเข้าถึง Windows API จำนวนมากจาก Python
ดู CHANGES.txt สำหรับการเปลี่ยนแปลงที่โดดเด่นล่าสุด
เอกสารมีความยาวและน่าเศร้า แต่ขณะนี้มีไฟล์ช่วยเหลือเวอร์ชันออนไลน์ที่มาพร้อมกับผู้ติดตั้ง (ขอบคุณ @ofek!) หลายรายการนั้นเก่ามาก แต่บางรายการก็สร้างขึ้นโดยอัตโนมัติและเป็นปัจจุบัน อยากช่วยคลี่เอกสาร!
อย่าลังเลที่จะเปิดปัญหาสำหรับข้อบกพร่องทั้งหมด (หรือข้อบกพร่องที่น่าสงสัย) ใน pywin32 เรายินดีรับคำขอดึงข้อบกพร่องหรือฟีเจอร์ทั้งหมดด้วย
อย่างไรก็ตาม โปรด อย่าเปิดปัญหา GitHub สำหรับการร้องขอการสนับสนุนทั่วไป หรือสำหรับปัญหาหรือคำถามในการใช้โมดูลในแพ็คเกจนี้ - ปัญหาเหล่านั้นจะถูกปิด สำหรับปัญหาดังกล่าว โปรดส่งอีเมลรายชื่อผู้รับจดหมาย python-win32 - โปรดทราบว่าคุณต้องสมัครรับรายชื่อก่อนที่จะโพสต์
ไม่รองรับการเผยแพร่ไบนารีอีกต่อไป
Build 306 เป็นเวอร์ชันสุดท้ายที่มีตัวติดตั้ง .exe คุณไม่ควรใช้มันจริงๆ แต่ถ้าคุณต้องการมันจริงๆ ค้นหาได้ที่นี่
คุณควรติดตั้ง pywin32 ผ่าน pip - เช่น
python -m pip install --upgrade pywin32
มีสคริปต์หลังการติดตั้ง (ดูด้านล่าง) ซึ่ง ไม่ ควรรันภายในสภาพแวดล้อมเสมือน ควรรันในการติดตั้ง "ทั่วโลก" เท่านั้น
สำหรับการเปลี่ยนแปลงที่ยังไม่เผยแพร่ คุณสามารถดาวน์โหลดบิลด์ที่สร้างโดยการกระทำของ GitHub - เลือก "เวิร์กโฟลว์" ใดก็ได้จากสาขา 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
โดยปกติจะหมายถึงหนึ่งใน 2 สิ่ง:
คุณได้อัปเกรดการติดตั้งที่สคริปต์หลังการติดตั้งเคยทำงานก่อนหน้านี้ ดังนั้นคุณควรรันอีกครั้ง:
python Scripts/pywin32_postinstall.py -install
การดำเนินการนี้จะพยายามล้างการติดตั้งที่ขัดแย้งกันแบบเก่าเล็กน้อย
มี pywin32 DLLs อื่นๆ ติดตั้งอยู่ในระบบของคุณ แต่อยู่ในตำแหน่งที่แตกต่างจากอันใหม่ สิ่งนี้บางครั้งเกิดขึ้นในสภาพแวดล้อมที่มาพร้อมกับ pywin32 ที่จัดส่งล่วงหน้า (เช่น อนาคอนดา?)
วิธีแก้ปัญหาที่เป็นไปได้คือ:
pywintypesXX.dll
และ pythoncomXX.dll
(โดยที่ XX
คือเวอร์ชัน Python - เช่น "39") ติดตั้ง Visual Studio 2019 (อาจใช้งานได้ในภายหลัง แต่ตัวเลือกอาจแตกต่างกัน) ทำตามคำแนะนำในสภาพแวดล้อม Build สำหรับเวอร์ชันที่คุณติดตั้ง
(คอมไพเลอร์ฟรีอาจใช้งานได้เหมือนกัน แต่ยังไม่ได้รับการทดสอบ - แจ้งให้เราทราบประสบการณ์ของคุณ!)
setup.py
เป็นสคริปต์สร้าง distutils มาตรฐาน ดังนั้นคุณอาจต้องการ:
python setup.py install
หรือ
python setup.py --help
โมดูลบางตัวจำเป็นต้องมี SDK ที่ไม่ชัดเจนในการสร้าง - setup.py
ควรประสบความสำเร็จ โดยแจ้งให้คุณทราบว่าเหตุใดจึงล้มเหลวในการสร้าง - หากการสร้างล้มเหลวจริงด้วยการกำหนดค่าของคุณ โปรดเปิดปัญหา
ขั้นตอนต่อไปนี้จะดำเนินการเมื่อสร้างรีลีสใหม่ - ส่วนใหญ่เป็นการสร้างรายการตรวจสอบ ดังนั้น @mhammond จะไม่ลืมว่าต้องทำอย่างไร :)
ตั้งแต่รุ่น build 307 กระบวนการเผยแพร่จะขึ้นอยู่กับส่วนที่สร้างขึ้นโดยการกระทำของ Github
ตรวจสอบให้แน่ใจว่า CHANGES.txt มีทุกสิ่งที่ควรค่าแก่การสังเกต อัปเดตส่วนหัวเพื่อให้สะท้อนถึงบิวด์และวันที่ที่กำลังจะเผยแพร่ คอมมิตมัน
อัปเดต setup.py ด้วยหมายเลขบิลด์ใหม่ อัปเดต CHANGES.txt เพื่อให้มีส่วนหัวใหม่สำหรับเวอร์ชันที่ยังไม่ได้เผยแพร่ถัดไป (เช่น ส่วน "กำลังมาในรุ่น XXX ที่ยังไม่ได้เผยแพร่" ใหม่ที่ว่างเปล่า)
พุชการเปลี่ยนแปลงเหล่านี้ไปที่ GitHub รอให้การดำเนินการเสร็จสิ้น จากนั้นดาวน์โหลดอาร์ติแฟกต์จากการเรียกใช้ครั้งนั้น
อัปโหลด .whl artifacts ไปยัง pypi - เราดำเนินการนี้ก่อนที่จะพุชแท็ก เนื่องจากอาจถูกปฏิเสธเนื่องจาก README.md
ที่ไม่ถูกต้อง เสร็จสิ้นผ่าน py -3.? -m twine upload dist/*XXX*.whl
สร้างแท็ก git ใหม่สำหรับการเปิดตัว
อัปเดต setup.py ด้วยหมายเลขบิลด์ใหม่ + ".1" (เช่น 123.1) เพื่อให้แน่ใจว่าบิลด์การทดสอบในอนาคตจะไม่เข้าใจผิดว่าเป็นเวอร์ชันจริง
ตรวจสอบให้แน่ใจว่าทุกอย่างถูกพุชไปที่ GitHub รวมถึงแท็กด้วย (เช่น git push --tags
)
ส่งอีเมลไปที่ python-win32
นี่เป็นกระบวนการเก่าที่ใช้เมื่อมีการใช้สภาพแวดล้อม dev ภายในเครื่องเพื่อสร้างบิลด์ Build 306 เป็นรุ่นล่าสุดที่มีกระบวนการนี้
ตรวจสอบให้แน่ใจว่า CHANGES.txt มีทุกสิ่งที่ควรค่าแก่การสังเกต อัปเดตส่วนหัวเพื่อให้สะท้อนถึงบิวด์และวันที่ที่กำลังจะเผยแพร่ คอมมิตมัน
อัปเดต setup.py ด้วยหมายเลขบิลด์ใหม่
ดำเนินการ make_all.bat
รอตลอดไป ทดสอบสิ่งประดิษฐ์
อัปโหลด .whl artifacts ไปยัง pypi - เราดำเนินการนี้ก่อนที่จะพุชแท็ก เนื่องจากอาจถูกปฏิเสธเนื่องจาก README.md
ที่ไม่ถูกต้อง เสร็จสิ้นผ่าน py -3.? -m twine upload dist/*XXX*.whl
คอมมิต setup.py (ดังนั้นหมายเลขบิลด์ใหม่จึงอยู่ใน repo) ให้สร้างแท็ก git ใหม่
อัปโหลดตัวติดตั้ง .exe ไปยัง github
อัปเดต setup.py ด้วยหมายเลขบิลด์ใหม่ + ".1" (เช่น 123.1) เพื่อให้แน่ใจว่าบิลด์การทดสอบในอนาคตจะไม่เข้าใจผิดว่าเป็นเวอร์ชันจริง
ตรวจสอบให้แน่ใจว่าทุกอย่างถูกพุชไปที่ GitHub รวมถึงแท็กด้วย (เช่น git push --tags
)
ส่งอีเมลไปที่ python-win32