在由python模塊使用的setup.py中包含'helper'shell腳本的最佳方法是什麼?我不想將它包含爲腳本,因爲它不是自行運行的。python distutils在模塊目錄中包含Shell腳本
另外,data_files只是在安裝路徑(不是模塊安裝路徑)中複製東西,因此看起來並不是最佳路線。
我想問題是:有沒有一種通用的方式在python distutils包中包含非python(非C)腳本/二進制文件的方法?
在由python模塊使用的setup.py中包含'helper'shell腳本的最佳方法是什麼?我不想將它包含爲腳本,因爲它不是自行運行的。python distutils在模塊目錄中包含Shell腳本
另外,data_files只是在安裝路徑(不是模塊安裝路徑)中複製東西,因此看起來並不是最佳路線。
我想問題是:有沒有一種通用的方式在python distutils包中包含非python(非C)腳本/二進制文件的方法?
我不認爲有辦法打包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編寫腳本,我肯定會這樣做。
包括在MANIFEST.in,是這樣的:
include mycode/myscript.sh
下面是一個使用輔助腳本的例子Python包:
https://github.com/pminkov/kubeutils
這個文件看看,它運行shell腳本: https://github.com/pminkov/kubeutils/blob/master/kubeutils/kutils.py
Ano其問題可能是這樣的包含Bash腳本的pypi包可能無法在例如視窗?
什麼是由python模塊使用的幫助程序腳本,但它本身不是?你到底在做什麼? – delnan 2013-02-21 18:01:41
基本上它只是一個愚蠢的shell腳本,它可以執行某些操作(例如特殊的grep調用者或sed調用者)。該修復可能只是將shell文本放入一個python函數中,並且決不處理不是.py模塊的文件。我只是覺得可能有某種解決方法。 – mathtick 2013-02-21 18:21:28