我在我的文件系統上有一個自定義Python包(稱爲MyProject
),其中包含setup.py
和requirements.txt
。該軟件包需要由Flask服務器(將部署在AWS/EC2/EB上)使用。用`pip`部署一個自定義python包
在我的Flask項目目錄中,我創建了一個virtualenv
並運行pip install -e ../path/to/myProject
。
但由於某些原因,的MyProject
上游的git回購在pip freeze
顯示出來:
...
llvmlite==0.19.0
-e git+https://github.com/USERNAME/[email protected]{some-git-hash}
python-socketio==1.8.0
...
與git的參考是一個問題,因爲倉庫是私人和部署服務器沒有(和不應該,並且永遠不會)具有訪問它的憑據。部署服務器甚至沒有安裝git(並且它似乎是非常有問題的,因爲pip
假定沒有我的許可)。 MyProject
的requirements.txt
或setup.py
沒有任何暗示git,所以我不知道這是從哪裏來的。
我可以欺騙項目到項目瓶的子目錄,然後把下面的MyFlaskProject
的requirements.txt:
...
llvmlite==0.19.0
./MyProject
python-socketio==1.8.0
...
但是,這並不工作,因爲路徑作爲相對於運行時的pip
進程的工作目錄,而不是requirements.txt
。確實,它似乎是pip is broken in this respect。在我的情況下,EC2從其他目錄運行其安裝腳本(具有指定的requirements.txt的完整路徑),並且如預期的那樣,這會失敗。
將自定義Python包部署爲另一個項目的依賴關係的正確方法是什麼?
它是否與絕對路徑一起工作? –
@SimonHobbs:不,因爲絕對路徑是由部署服務器決定的。它與我的機器不同,不在我的控制之下,可能會從部署變爲部署。 – trbabb