python setup.py安装在高山图像上无法正常工作

时间:2018-02-21 16:41:04

标签: python docker setuptools alpine python-packaging

我有以下dockerfile:

FROM python:alpine3.6

ENV PORT 5000
ENV APP  /usr/src
ENV FLASK_APP pkg_name/app.py

RUN apk update
RUN apk upgrade
RUN apk add build-base postgresql-dev git gcc
RUN apk add musl-dev python3-dev libffi-dev

ADD . /
RUN python setup.py install
# RUN pip install .

EXPOSE $PORT

CMD flask run

上面的配置在标准python图像中完美地工作,但在高山图像中不能。 python setup.py installpip install .都会正确安装软件包,但是当我运行flask run时,它会抱怨找不到已安装的模块:

 Traceback (most recent call last):
 File "pkg_name/app.py", line 6, in <module>
     from pkg_name.api import api 
 ModuleNotFoundError: No module named 'pkg_name'

运行pip freeze显示已安装软件包列表中的项目。尝试在python解释器>>> import pkg_name中导入项目也很好,这很奇怪。

问题:

是否有人解释为什么pkg无法在运行时导入,尽管它已在interpeter中正确安装和导入。我该如何解决呢?

1 个答案:

答案 0 :(得分:2)

对我有用的解决方案是设置PYTHONPATH变量。

PYTHONPATH=${PYTHONPATH}:/usr/local/lib/python3.6/site-packages

仍然感觉只是一个肮脏的解决方法,因为站点包路径在sys.path并且包正确安装在那里,但是现在它解决了这个问题。