2013-02-21 42 views
3

在由python模塊使用的setup.py中包含'helper'shell腳本的最佳方法是什麼?我不想將它包含爲腳本,因爲它不是自行運行的。python distutils在模塊目錄中包含Shell腳本

另外,data_files只是在安裝路徑(不是模塊安裝路徑)中複製東西,因此看起來並不是最佳路線。

我想問題是:有沒有一種通用的方式在python distutils包中包含非python(非C)腳本/二進制文件的方法?

+1

什麼是由python模塊使用的幫助程序腳本,但它本身不是?你到底在做什麼? – delnan 2013-02-21 18:01:41

+1

基本上它只是一個愚蠢的shell腳本,它可以執行某些操作(例如特殊的grep調用者或sed調用者)。該修復可能只是將shell文本放入一個python函數中,並且決不處理不是.py模塊的文件。我只是覺得可能有某種解決方法。 – mathtick 2013-02-21 18:21:28

回答

1

我不認爲有辦法打包shell腳本。

對於我的其中一個項目,我特別需要一個shell腳本作爲參數通過子進程傳遞給另一個工具,該工具只會除了shell腳本,而不是python腳本。

因此,我終於通過讓python寫入myscript.sh的方式來解決這個問題。

它看起來像這樣:

bash_script_name = cwd + "/myscript.sh" 
bash_script_file_obj = open(bash_script_name, 'w') 
bash_script_file_obj.write(text_of_myscript) 
bash_script_file_obj.close() 
os.chmod(bash_script_name, 0755) 

subprocess.call([another_tool, bash_script_name]) 

os.remove(bash_script_name) 

這不是很優雅,但它的工作。如果你有選擇用Python編寫腳本,我肯定會這樣做。

0

Ano其問題可能是這樣的包含Bash腳本的pypi包可能無法在例如視窗?