Tags:
Forums: 

ผมใช้ pyinstall กับ upx จากนั้นก็สร้าง bat file ตามด้านล่าง

set PIP=C:\Python25\Lib\site-packages\pyinstaller_1.2\

set PATH=C:\Python25

python %PIP%Makespec.py --noconsole --upx myProject.py

python %PIP%Build.py myProject.spec

แล้วก็รันมัน ปรากฎว่าได้ error แบบนี้

SystemError: Parent module 'hooks.hook-PIL' not loaded

ไม่ทราบว่าเป็นเพราะอะไร แล้วจะแก้ยังไงดีครับ

ผมใช้ python2.5, reportlab2.2, PIL-1.1.6, pyqt4 บนWindows นะครับ

Get latest news from Blognone
By: cwt
AndroidRed Hat
on 28 December 2008 - 12:27 #77931

ทำด้วยมือโดยไม่ใช้ bat โดย run ใน directory ของ pyinstaller โดยตรงได้ผลยังไงครับ

By: RuzeriE on 29 December 2008 - 09:32 #78040

คือ ผมไม่ค่อยเข้าใจที่คุณ cwt บอกเท่าไหร่นะครับ

แต่ก็ได้ลองทำตามที่เข้าใจไปคือ

ผม copy file.py ทุกตัวที่เกี่ยวกับโปรเจ็คผมไปไว้ใน pyinstaller directory จากนั้นก็ใช้ command line ตามคำสั่งแบบเดียวกับ bat file ข้างต้น ก็ปรากฎว่า ไ้้ด้ผลเหมือนเดิมครับ

ไม่ทราบว่าผมทำอย่างที่คุณ cwt ต้องการจะให้ทำจริงๆรึเปล่า ถ้ายังไงรบกวนบอกด้วยครับ

ขอบคุณครับ

By: RuzeriE on 20 January 2009 - 00:22 #81585

เหอๆ ขออนุญาตตอบเองนะ เค้าว่ามาอย่างนี้

PyInstaller works with any version of Python since 1.5 and up to 2.4.

ไม่รู้ว่าใช่รึเปล่านะครับ (ผมใช้ python 2.5)

ผมก็เลยหนีไปใช้ py2exe แทน ก็ไปหาวิธีจาก codenone มาแล้วก็ทำตามปรากฎว่า run setup.py ได้ไม่มีปัญหา แต่พอ double click ที่ exe มันฟ้องว่าหา _qt ไม่เจอ ก็หาวิธีแก้ไป ก็ไปเจอที่นี่ http://www.py2exe.org/index.cgi/Py2exeAndPyQt

ขอสรุปเอาไว้ให้ตัวเองด้วยนะครับ

  • สร้าง setup.py ไว้ที่เดียวกับ main.py โปรแกรมของเรา โดยข้างในเป็นแบบนี้

    from distutils.core import setup
    import py2exe
    setup(windows=[{"script":"main.py"}], options={"py2exe":{"includes":["sip"]}})

  • จากนั้นก็เข้า command line

-> cd to setup.py directory

-> set PATH=c:\Python25

-> python setup.py py2exe

  • สุดท้ายก็เอาทั้งโฟลเดอร์ dist ที่ได้ออกมาไปใช้
By: cwt
AndroidRed Hat
on 22 January 2009 - 01:47 #81753 Reply to:81585

2.5 ก็ใช้ได้ เพราะผมก็ใช้อยู่