ความเข้ากันได้กับ PyInstaller และ cx_Freeze
บทนำ
Aspose.Slides for Python via .NET extensions คือส่วนขยายของ Python C มาตรฐาน ดังนั้นจึงสามารถทำให้เป็น frozen เป็น dependency ของโปรแกรมด้วยเครื่องมืออย่าง PyInstaller และ cx_Freeze (หรือที่คล้ายกัน) ซึ่งช่วยให้คุณสร้างไฟล์ executable จากสคริปต์ Python ของคุณ เครื่องมือเหล่านี้เรียกว่า “freezers” เนื่องจากพวกมันรวมโค้ดและ dependency ของคุณไว้ในไฟล์เดียวที่สามารถแจกจ่ายและทำงานบนเครื่องอื่นโดยไม่ต้องติดตั้ง Python หรือไลบรารีเพิ่มเติม วิธีนี้ทำให้การแจกจ่ายแอปพลิเคชัน Python ของคุณง่ายขึ้น
การทำให้ Aspose.Slides for Python via .NET extension เป็น frozen เป็น dependency จะแสดงด้านล่างด้วยโปรแกรมง่าย ๆ ที่ใช้ Aspose.Slides
PyInstaller
โดยทั่วไปไม่จำเป็นต้องทำอะไรพิเศษเมื่อแพคเกจโปรแกรมที่ขึ้นอยู่กับ Aspose.Slides for Python via .NET extension เมื่อโปรแกรมทำการ import ส่วนขยายในรูปแบบที่ PyInstaller มองเห็น ส่วนขยายจะถูกรวมอยู่ในโปรแกรม เนื่องจาก Aspose.Slides for Python via .NET มี PyInstaller hooks ไว้แล้ว dependency ของมันจะถูกตรวจจับและคัดลอกเข้าสู่ bundle โดยอัตโนมัติ
slide_app.py:
import aspose.slides as slides
with slides.Presentation() as presentation:
slide = presentation.slides[0]
slide.shapes.add_auto_shape(slides.ShapeType.LINE, 50.0, 150.0, 300.0, 0.0)
presentation.save("NewPresentation.pptx", slides.export.SaveFormat.PPTX)
$ pyinstaller slide_app.py
อย่างไรก็ตาม PyInstaller อาจพลาดการค้นหา hidden imports บางครั้ง—โมดูลที่ถูก import อย่างพลวัตหรือโดยอ้อมจากโค้ดของคุณ เพื่อรวม hidden import ให้ใช้ตัวเลือกของ PyInstaller dependencies ของส่วนขยายถูกระบุใน PyInstaller hooks ที่มาพร้อมกับ Aspose.Slides for Python via .NET
slide_app.spec:
a = Analysis(
['slide_app.py'],
...
hiddenimports=['aspose.slides']
)
$ pyinstaller slide_app.spec
cx_Freeze
เพื่อทำให้โปรแกรมเป็น frozen ด้วย cx_Freeze ให้กำหนดค่าให้รวมแพ็กเกจรูทของ Aspose.Slides for Python via .NET extension ที่คุณใช้ ซึ่งจะทำให้ส่วนขยายและโมดูลที่ขึ้นอยู่ทั้งหมดถูกคัดลอกเข้าสู่การสร้างพร้อมกับแอปพลิเคชันของคุณ
ใช้สคริปต์ cxfreeze
$ cxfreeze slide_app.py --packages=aspose
ใช้สคริปต์ Setup
setup.py:
executables = [Executable('slide_app.py')]
options = {
'build_exe': {
'packages': ['aspose'],
}
}
setup(...
options=options,
executables=executables)
$ python setup.py build_exe
FAQ
ฉันต้องการ Microsoft PowerPoint หรือ .NET ติดตั้งบนเครื่องของผู้ใช้หรือไม่?
ไม่, ไม่จำเป็นต้องใช้ PowerPoint. Aspose.Slides เป็น engine ที่ทำงานอิสระ; แพ็กเกจ Python ส่งมาพร้อมทุกสิ่งที่ต้องการเป็นส่วนขยายสำหรับ CPython ผู้ใช้ไม่จำเป็นต้องติดตั้ง .NET แยกต่างหาก
ฉันควรแนบใบอนุญาตให้กับแอปพลิเคชันที่ทำการ frozen อย่างไรให้ถูกต้อง?
คุณสามารถเก็บไฟล์ XML ใบอนุญาตไว้ข้างไฟล์ executable หรือฝังเป็น resource แล้วโหลดจากเส้นทางที่เข้าถึงได้ก่อนเรียกใช้ API ครั้งแรก สำคัญ: อย่าแก้ไขเนื้อหา XML (รวมถึงการเปลี่ยนบรรทัด)
ฉันควรทำอย่างไรหากฟอนต์แสดงผลต่างจากสภาพแวดล้อมการพัฒนาหลังจากการ build?
ตรวจสอบให้แน่ใจว่าแบบอักษรที่คุณใช้มีในสภาพแวดล้อมเป้าหมาย (รวมใน bundle หรือติดตั้งในระบบ) และเส้นทางของมันถูกแก้ไขอย่างถูกต้องขณะรันไทม์; พฤติกรรมของฟอนต์มีความอ่อนไหวเป็นพิเศษบน Linux