1
我有一個Python包,我用pip發佈。我需要添加一些自定義代碼在安裝時要運行:使用pip安裝運行自定義代碼失敗
from setuptools import setup
from setuptools.command.install import install
class CustomInstall(install):
def run(self):
install.run(self)
print "TEST"
setup(
...
cmdclass={'install': CustomInstall},
...)
我想這個問題可能點子抑制標準輸出:Custom pip install commands not running。但後來我將print "TEST"
替換爲創建文件並寫入一些文本,但這也沒有發生。
看來,當我創建並上傳my_package測試的PyPI我自定義的run方法只發生:
python setup.py sdist bdist_wheel upload -r https://testpypi.python.org/pypi
而不是當我點子安裝:
pip install -i https://testpypi.python.org/pypi my_package
也許我根本不瞭解pip和setuptools如何工作,但這與我預期的行爲相反。
我的問題是:
- 我怎樣才能讓我的CustomInstall類工作?
和
- 當你調用
pip install
居然會發生什麼?
我看過一個setuptools文檔和PyPI文檔,我一直沒弄明白。看起來其他人已經取得了成功:Run custom task when call `pip install`,所以我不確定發生了什麼問題。
是的,這是我用以及資源。我的困惑是,當我運行'python setup.py'時,自定義邏輯運行,但當我點擊安裝我的項目時運行。我認爲run()方法會在'pip install my_project'上被調用。情況並非如此嗎?如果是這樣,是否有一種不同的方法,我可以在'pip install my_project'上運行子類? –
爲了回答你的問題,因爲我打了它:你需要發佈你的軟件包作爲源代碼分發(sdist)而不是輪子(bdist_wheel),因爲在安裝過程中setup.py不會被執行爲輪子 – ChristopheLec