2016-01-20 76 views
0

我正在編寫一個封裝了一個非python程序,我自己和我的團隊經常需要自動化。我用setuptools打包了這個文件,並希望將其提供給其他開發人員或我們的運營團隊。Python包裝:需要非python二進制文件或安裝它們,如果他們不在那裏?

這是我想要做的。它包裝的程序顯然需要在那裏爲我的模塊工作。所以,我想我需要setuptools來檢查它是否已安裝,如果不是,請安裝它。

有沒有一種方法可以在setup()中執行此操作,或者該步驟需要手動操作(還是由其他操作)?或...應該只是留在模塊中的東西?大約50MB,所以不是很大。

回答

1

你的程序需要安裝,或者你有一個便攜版本?

如果它是可移植的,則可以用相對路徑觸發它,然後在編譯的Python腳本中重新創建相同的結構。

folder/ 
main.py 
bin/ 
    file.exe 

比方說,你想給你打電話從main.py

# main.py 
import os 

# get the current directory dynamically 
base_dir = os.getcwd() 
# create the file path 
file_path = os.path.join(base_dir, 'bin', 'file.exe') 
# run the file 
os.system(file_path) 

二進制編譯文件後,應在目的地上創建的文件夾bin和副本中你file.exe

+0

它可以便攜。所以..如果我理解你的迴應,如果它可以是便攜式的,那麼我就把它放在我的包裏......在「bin」或類似的東西下面說,然後相應地引用它。無需安裝它。那是對的嗎? – tomlester

+0

是的!我編譯了一些使用外部可執行文件的程序(例如phantomjs.exe)。我只是在我的文件中使用相對路徑引用,然後在目標文件夾中重新創建相同的路徑。它應該工作得很好 – mabe02

+1

如果你想了解如何執行相對導入的一些提示,你可以參考[這個答案]的第一部分(http://stackoverflow.com/a/34772426/5687152) – mabe02

相關問題