可能重複:
Way to have compiled python files in a separate folder?編譯後的字節碼文件(.pyc)能否在不同的目錄下生成?
當Python模塊編譯成字節碼,它從你的.py文件產生pyc文件。
我的問題是,是否有可能將這些.pyc文件寫入與模塊所在的目錄不同的目錄?
例如,我有一個大的模塊目錄。我不想讓它堆滿.pyc文件,我想將我的源代碼保存在目錄中,並有一個子目錄,比如存儲所有.pyc的「字節碼」。
這可能嗎?
可能重複:
Way to have compiled python files in a separate folder?編譯後的字節碼文件(.pyc)能否在不同的目錄下生成?
當Python模塊編譯成字節碼,它從你的.py文件產生pyc文件。
我的問題是,是否有可能將這些.pyc文件寫入與模塊所在的目錄不同的目錄?
例如,我有一個大的模塊目錄。我不想讓它堆滿.pyc文件,我想將我的源代碼保存在目錄中,並有一個子目錄,比如存儲所有.pyc的「字節碼」。
這可能嗎?
這在 「Way to have compiled python files in a seperate folder?」
被應答簡短回答:否 - 除非您運行的是Python 3.2或更高版本 - 請參閱here。
澄清:3.2之前,您可以編譯字節碼,並把它在其他地方按布賴恩河邦迪的建議,但除非你確實從那裏運行它(而不是從文件夾中您想保留原始)Python會仍然輸出.py文件所在的字節碼。
更好的回答:它只能在3.2或更高版本上運行。之前沒有。這個問題是重複的;請按照上面的鏈接。 – 2013-05-10 06:32:27
我似乎記得在某處讀到這是不可能的,而且Python人有理由不讓它成爲可能,儘管我不記得在哪裏。
編輯:對不起,我誤解了這個問題 - 我的意思是說,不可能(我認爲)配置Python可執行文件以將其字節碼文件默認放在不同的目錄中。你可以隨時編寫一個小的Python編譯器腳本(或找到一個,我確定他們在那裏),將字節碼文件放在你選擇的位置。
檢查py_compile module,特別是:
py_compile.compile(file[, cfile[, dfile[, doraise]]])
的CFile的是你感興趣的參數
從上面的鏈接:
...的字節 - 代碼被寫入cfile, ,默認爲文件+'c'...
你可以編寫一個腳本來編譯它們,然後移動它們。類似:
for i in `ls *.pyc`
do
mv $i $DEST_DIR
done
(可縮短爲:
for i in *.pyc
do
mv $i $DEST_DIR
done
或,令人驚訝地,對
mv *.pyc $DEST_DIR
)
我增加了兩個版本的代碼,雖然我相信它的功能等同於`rm * .pyc`:編譯的文件可以被移動;所以呢? – tzot 2009-03-04 22:18:53
在情況下,「亂扔垃圾」確實是你的問題,你可以隨時收拾.py
,.pyc
和/或.pyo
文件的.zip文件,並將其添加到您的sys.path
。
我一直在尋找這個答案,而且找不到太多。但是你可以前綴的文件夾名稱,以新編譯的文件名(需要確保文件夾存在第一)
下面是一些代碼爲我的作品:
import py_compile
import os
import glob
import shutil
path = ''
for infile in glob.glob(os.path.join(path, '*.py')):
print "current file is: " + infile
strDestination = 'compiled/' + infile + 'c'
py_compile.compile(infile,strDestination)
如果沒有與Python本身,那麼你可以編寫一個shell腳本,通過find,xargs和move來完成。 – 2009-03-04 19:11:02