我的文件系统上有一个自定义Python包(称之为MyProject
),其中包含setup.py
和requirements.txt
。此软件包需要由Flask服务器使用(将部署在AWS / EC2 / EB上)。
在我的Flask项目目录中,我创建了一个virtualenv
并运行pip install -e ../path/to/myProject
。
但出于某种原因,MyProject
上游git repo显示在pip freeze
中:
...
llvmlite==0.19.0
-e git+https://github.com/USERNAME/MYPROJECT.git@{some-git-hash}
python-socketio==1.8.0
...
对git的引用是一个问题,因为存储库是私有的,部署服务器不会(也不应该,也永远不会)拥有访问它的凭据。部署服务器甚至还没有安装git(pip
在没有我的许可的情况下假定它确实存在问题。 MyProject
requirements.txt
或setup.py
中没有任何内容暗示git,所以我不确定它到底是从哪里来的。
我可以将项目重写到Flask项目的子目录中,然后将以下内容放在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包部署为另一个项目的依赖项的正确方法是什么?