问题描述
我知道this个热门话题,但是在使用python
和pip
和git+https
来安装python
应用程序时遇到了不同的结果setup.py
我正在构建docker
图片。我正在尝试将其安装在包含其他几个python应用程序this自定义webhook的映像中。
- 使用
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
- 在第二种方法中,我只是在本地复制此目录,然后在
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
文件的那个)在运行时不起作用。