我一直在努力解決這個問題一段時間,我甚至試着問這個問題here,但做得非常糟糕。從那以後,我開始明白髮生了什麼好轉。我相信問題的根源在於,當我運行python setup.py [install|develop]
時,它會嘗試使用easy_install而不是pip來實現依賴關係(install_requires)。setup.py可以使用pip而不是easy_install嗎?
這聽起來可能不是問題,但我運行自己的pypi服務器來存儲這些依賴關係。我可以指定pip使用帶有PIP_INDEX_URL環境變量的索引服務器。這在使用pip install
進行部署時工作正常,但在開發時,我想要使用setup.py develop
進行安裝。從我所知道的,setup.py調用easy_install,它不關注這個環境變量,試圖在pypi.python.org上找到我的包。我知道在命令行中,我可以爲easy_install指定一個索引服務器,但在從setup.py隱式調用它時看不到任何方法。
我對pip沒有遇到這個問題的事實感到困惑。當我pip install
這些模塊之一,它運行我的包的setup.py,但從我的索引服務器拿起依賴關係。爲什麼setup.py在pip下運行時的行爲與直接調用時相比有所不同?
在setup.py中指定dependency_links並不是一個好的答案,因爲我希望我的環境確定要使用哪個pypi服務器(例如prod,test或dev)。
我的設置對我來說似乎並不奇怪,所以其他人肯定會遇到並解決這個問題。
我沒有意識到,你可以直接通過pip直接安裝,而無需先升級到服務器。這很棒。結合@detly建議的-e選項,這是完美的。非常感謝你們! – zenzic