2010-05-08 85 views
2

有沒有什麼辦法讓庫文件中的py2exe輸出.py源文件而不是字節編譯的.pyc文件?使py2exe產生`.py`文件

+0

您已經有.py文件 - 它們被輸入到py2exe。既然你已經有.py文件,你想完成什麼? – 2010-05-08 10:46:08

+0

我想讓它輸出'.py'文件,而不是讓py2exe在庫中輸出'.pyc'。這樣我才能更容易地進行調試。 – 2010-05-08 10:52:05

+2

-1:你已經有.py文件。這沒有意義。評論沒有幫助。嘗試使用一些合理的解釋來更新問題,以瞭解爲什麼當你已經有.py文件時需要.py文件*。 – 2010-05-08 12:12:12

回答

1

我做了很久以前,所以我希望我沒有記錯:

  • 集壓縮爲False,所以py2exe不會創建一個Zip'd庫文件。
  • 將優化設置爲零,py2exe將寫入pyc文件。

UPDATE:拉姆Rachum是正確的,使用skip_archive選項,而不是compressed

您將無法修改您的主Python文件,因爲它將被嵌入到主可執行文件中,因此請儘量減少。然後,您可以根據需要在您的發行版中手動替換pyc文件和py文件。沒有理由替換標準庫,但是,只有你自己的代碼。

(這是不是最佳的調試,但我猜你想解決一些問題只發生在你的軟件的發佈版本這樣。)

請讓我知道,如果它不工作,我我會盡力幫忙。

UPDATE

我剛讀了py2exe源代碼的相關部分。看來,py2exe不支持開箱即用。所以我們已經選擇了觸摸它的源代碼。

您可以輕鬆修改py2exe以支持此模式。請參見build_exe.py中的byte_compile函數。有一個compile內置函數的調用,你可以用copy_file來代替它。不要忘記修改目標文件名(dfile)以使擴展名.py代替.pyc.pyo。我知道這是錯綜複雜的,但我沒有看到任何其他可能性來解決你的問題。

如果您好奇,您還可以添加新的py2exe選項或爲此引入一個新的optimize值。實際上,這將是對py2exe的開源貢獻。 ;)

+0

我已經可以手動將它們替換爲py文件。 (另外,我正在使用'skip_archive'來創建一個文件夾,而不是一個zip文件。) 我只是希望py2exe不會嘗試成爲那麼聰明;我希望它只是將每個包的原始包內容複製到庫中。除了編譯''。py'文件,它也丟失了一些數據文件,例如一些科學軟件包。 – 2010-05-09 11:51:57

+0

您可以在'data_files'選項中顯式列出'py2exe'錯過的數據文件。請參閱:http://py2exe.org/index.cgi/data_files – fviktor 2010-05-09 14:31:05

+0

請參閱上面的我的更新。我希望它有幫助。 – fviktor 2010-05-09 14:55:23