2010-05-20 90 views
3

我正在使用cx_Freeze凍結我的python程序。在運行cx_Freeze時,會創建一堆PYD文件,將大量PYC文件放入一個名爲library.zip的存檔中,並且還有一些DLL文件。cx_Freeze和PYC/PYD文件

有人能告訴我PYC和PYD文件之間的區別嗎? PYD文件不在library.zip中的原因是什麼? 是否可以將PYD文件放入檔案中?

謝謝。

回答

6

免責聲明:我沒有用cx_Freeze在一段時間......

.PYD文件是包含特定的python-需要的功能的DLL機器代碼文件。

.PYC文件是已編譯爲字節碼的.py文件。

所以PYDs是機器代碼和PYCs是字節碼

現在,至於爲什麼PYDs不在.ZIP ....我想這是因爲那些.PYDs由Python解釋器需要運行程序。什麼cx_Freeze確實基本上是這樣的:

  1. 編譯所有.py文件,並扔在.pyc文件文件的zip
  2. 把所有需要的文件.pyd在zip
  3. 創建存根.py文件,並把它的輸出目錄
  4. 複製python.exe和重命名爲myprogram.exe
  5. 副本打開.zip所需的所有.pyd文件並運行的內容

小號o你實際上並沒有編譯你的python文件,而是重命名了interpeter並凍結了所有的源文件。

我希望這會有所幫助。

+0

謝謝蒂姆。 ..而這一切,當我一直在想我已經'編譯'成exe。 :p – 2010-05-20 17:58:41

+0

你可以看看pypy。 Pypy實際上可以將你的python代碼編譯爲C,但它不是很容易設置/使用/理解。 http://codespeak.net/pypy/dist/pypy/doc/ – 2010-05-24 13:49:11