gpt4 book ai didi

python - 使用 `pip` 部署自定义 python 包

转载 作者:太空宇宙 更新时间:2023-11-04 05:00:03 24 4
gpt4 key购买 nike

我的文件系统上有一个自定义 Python 包(称之为 MyProject),其中包含一个 setup.py 和一个 requirements.txt。这个包需要一个Flask服务器使用(会部署在AWS/EC2/EB上)。

在我的 Flask 项目目录中,我创建了一个 virtualenv 并运行 pip install -e ../path/to/myProject

但由于某些原因,MyProject 的上游 git 存储库出现在 pip freeze 中:

...
llvmlite==0.19.0
-e git+https://github.com/USERNAME/MYPROJECT.git@{some-git-hash}
python-socketio==1.8.0
...

对 git 的引用是一个问题,因为存储库是私有(private)的,部署服务器没有(也不应该,也永远不会)有访问它的凭据。部署服务器甚至都没有安装 git(pip 未经我的许可就假设它确实存在,这似乎非常有问题)。 MyProjectrequirements.txtsetup.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 包部署为另一个项目的依赖项的正确方法是什么?

最佳答案

要从 git 仓库安装你自己的 python 包,你可能需要检查 this post

为了解决凭证问题,为什么不在 EC2 上安装 git?您可以简单地创建一个 ssh key 并将其与 MyProject 存储库共享。

我在 Jenkins 部署的 ECS 实例上使用此解决方案(使用 Habitus 在构建镜像时隐藏 Jenkin 的 ssh key )并且它对我来说工作正常!

关于python - 使用 `pip` 部署自定义 python 包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45971035/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com