0
想象一下以下情形:您有一個名爲'foo'的python包依賴於'bar'。包'bar'本身依賴於另一個python包,讓我們來形容,這取決於一個C庫,其中cannot be installed on readthedocs.io。因此,'bar'在conf.py文件中被模擬依賴關係的依賴關係
class Mock(MagicMock):
@classmethod
def __getattr__(cls, name):
return MagicMock()
MOCK_MODULES = ['shapely', 'shapely.wkt', 'shapely.wkb', 'shapely.geometry', 'shapely.ops']
sys.modules.update((mod_name, Mock()) for mod_name in MOCK_MODULES)
嘲笑。
現在,我想只是從'bar'模擬出依賴關係,但仍然在RTD上安裝'bar',以便正確構建'foo'文檔。 我怎樣才能讓readthedocs.io模擬出酒吧的依賴性?
謝謝你的提示!更準確地理解它。你會推薦在上面描述的場景中爲這個依賴項'bar'添加這個檢查嗎?因此,我不會嘲笑'酒吧'本身,但'酒吧conf.py嘲笑出來,對吧? – gplssm
這應該工作。你可以通過自己去除已編譯的擴展和傳遞環境變量'READTHEDOCS'來在本地測試。 – phd
其實我不明白如何在本地進行測試:(。但是我嘗試着在os.environ中提供'如果'READTHEDOCS'的方法:'用RTD。可悲的是,它沒有效果。問題仍然是我有在rtd_requirements.txt中指定'bar'作爲所需依賴項,以便在RTD上安裝我的包,然後'bar'觸發整型安裝,整個過程失敗。我認爲我的問題是我沒有足夠的瞭解這個模擬的工作原理,它是否會影響RTD上的安裝過程? – gplssm