我正在研究需要sh
的包。這個軟件包在Windows上不受支持。對於Windows,我使用舊包sh
從pbs
分叉,並在我的名稱空間中將其重命名爲sh
。我可以做一個python包依靠不同的包由操作系統?
如何創建一個setup.py
,它將在Windows上正確安裝pbs
,並在其他平臺上正確安裝sh
?
編輯:經過一番研究,原來我的問題是特定於新wheel格式my answer反映。如果我不知道車輪應該如何工作,我將在未來問一個不同的問題。
我正在研究需要sh
的包。這個軟件包在Windows上不受支持。對於Windows,我使用舊包sh
從pbs
分叉,並在我的名稱空間中將其重命名爲sh
。我可以做一個python包依靠不同的包由操作系統?
如何創建一個setup.py
,它將在Windows上正確安裝pbs
,並在其他平臺上正確安裝sh
?
編輯:經過一番研究,原來我的問題是特定於新wheel格式my answer反映。如果我不知道車輪應該如何工作,我將在未來問一個不同的問題。
好吧,事實證明我原來的解決方案爲正確:
# setup.py
...
setup(
...
install_requires=["pbs" if os.name == 'nt' else "sh"]
...
)
這家最近爆發的原因是由於新wheel格式釋放。我的理解是,這種新格式不會將setup.py
與您的軟件包一起發佈,並使用其他方式處理依賴關係。
直到我明白如何運輸具有條件依賴關係的車輪,我不會爲此項目生產車輪。
是的!只要把你的代碼在條件塊的sys.platform變量如:
import sys
if (sys.platform=='win32'):
import somewindowsmodule
elif (sys.platform=='macOSX'):
import somemacmodule
elif (sys.platform=='linux'):
import somelinuxmodule
我不知道是什麼平臺串是爲Mac或Linux操作系統,但你可以明白這一點,我敢肯定。此外,某些模塊名稱都是虛構的以保護無辜者。 :)
您是否建議將代碼放在'setup.py'中?我的問題是關於安裝依賴關係。 –
在調用設置之前檢查'sys.platform'之類的東西 – JBernardo