2017-02-06 30 views
1

我用Distutils來分發我的包,非常方便。現在我想在用戶通過像pip install mypackage這樣的命令安裝我的包之後執行腳本或函數。我以爲我可以找到一個像register(funtionCalledAfterPackageInstalled)這樣的API,就像atexit.register(someFunction)一樣,在應用程序退出前它經常用於python執行函數,但是我失敗了。所以我想問一下:有沒有什麼方法可以做這樣的事情?如何通過python setuptoos執行腳本或函數?

背景:我參考了一個經常更新的DLL在我的包中,我不想把它放在我的包中,所以我不需要關心更新。我只想在用戶安裝我的軟件包後通過函數調用自動下載它。而且環境是WINDOWS,所以linux pakcage管理工具不起作用。

+1

調用'安裝後()'在'setup.py'可以執行其他的Python函數/方法。所以在這裏你可以運行Python程序或者系統調用(通過例子進行子進程)。 – Arount

+0

@Arount哇,太棒了,這就是我需要的。謝謝。 – lengxuehx

+0

所以我會做出適當的安慰,也許它會幫助其他人。 – Arount

回答

1

在您的setup.py文件中調用setup()之後,您可以調用另一個Python函數或方法。所以你可以通過例子運行python函數來製作你需要的東西或者執行外部命令subprocess

這將導致類似:

from distutil.core import setup 
import subprocess 

setup(... stuff ...) 

# Call external command  
subprocess.Popen('command here', ... attrs ...) 
# Or another Python function you wrote 
my_function()