安装pip git + https和python setup.py之间的区别

问题描述

我知道this个热门话题,但是在使用pythonpipgit+https来安装python应用程序时遇到了不同的结果setup.py

我正在构建docker图片。我正在尝试将其安装在包含其他几个python应用程序this自定义webhook的映像中。

  1. 使用git+https
RUN /venv/bin/pip install git+https://github.com/alerta/alerta-contrib.git#subdirectory=webhooks/sentry

这似乎以正确的方式安装了Webhook,因为可以发现相关的端点。 而且,当我执行到运行中的容器并搜索相关文件时,会看到以下内容

./venv/lib/python3.7/site-packages/sentry_sdk
./venv/lib/python3.7/site-packages/__pycache__/alerta_sentry.cpython-37.pyc
./venv/lib/python3.7/site-packages/sentry_sdk-0.15.1.dist-info
./venv/lib/python3.7/site-packages/alerta_sentry.py
./venv/lib/python3.7/site-packages/alerta_sentry-5.0.0-py3.7.egg-info
  1. 在第二种方法中,我只是在本地复制此目录,然后在Dockerfile中复制
copY sentry /app/sentry
RUN /venv/bin/python /app/sentry/setup.py install

这不能正确安装webhook,而且在相应的容器中,我看到了不同的文件布局

./venv/lib/python3.7/site-packages/sentry_sdk
./venv/lib/python3.7/site-packages/sentry_sdk-0.15.1.dist-info
./venv/lib/python3.7/site-packages/alerta_sentry-5.0.0-py3.7.egg
./alerta_sentry.egg-info
./dist/alerta_sentry-5.0.0-py3.7.egg

sentry_sdk-相关文件必须是不相关的)

为什么第二种方法无法正确安装webhook?

这两个选项会产生相同的结果吗?

解决方法

下面终于奏效了

RUN /venv/bin/pip install /app/sentry/

我不知道这两种安装模式之间的细微差别

但是我确实注意到/venv/bin/python /app/sentry/setup.py install不会产生alerta_sentry.py文件,而只会产生.egg文件,即./venv/lib/python3.7/site-packages/alerta_sentry-5.0.0-py3.7.egg

另一方面,/venv/bin/pip install /app/sentry/解包了(?).egg,创建了./venv/lib/python3.7/site-packages/alerta_sentry.py

我也不知道为什么第二个安装选项(即创建.egg文件的那个)在运行时不起作用。