我正在尝试在 python3.6 docker 基础映像(linux)上安装 python 应用程序。我一直在尝试使用虚拟环境,尽管有些人建议不要在 docker 中这样做。我可以看到需求已安装在虚拟环境的 python 站点包中,但是当我在激活虚拟环境后从源目录运行代码时,出现权限错误。
我的 Dockerfile:
FROM python:3.6
WORKDIR /opt
# create a virtual environment and add it to PATH so that it is
applied for all future RUN and CMD calls (doesn't work)
ENV VIRTUAL_ENV=/opt/venv
RUN python3 -m venv $VIRTUAL_ENV
ENV PATH="$VIRTUAL_ENV/bin:$PATH"
# Install Mono for pythonnet.
RUN apt-get update \
&& apt-get install --yes \
apt-transport-https \
git \
dirmngr \
clang \
gnupg \
ca-certificates \
&& apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --
recv-keys 3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF \
&& echo "deb http://download.mono-project.com/repo/debian
stretch/snapshots/5.20 main" | tee /etc/apt/sources.list.d/mono-
official-stable.list \
&& apt-get update \
&& apt-get install --yes \
&& rm -rf /var/lib/apt/lists/*
COPY requirements.txt .
COPY src ./src
COPY setup.py ./setup.py
COPY config.json ./config.json
COPY Utility.dll ./Utility.dll
COPY settings.ini ./settings.ini
COPY redis_conf.json ./redis_conf.json
COPY sql_config.json ./sql_config.json
RUN python3 -m venv $VIRTUAL_ENV \
# From here on, use virtual env's python.
&& venv/bin/pip install --upgrade pip \
&& venv/bin/pip install --no-cache-dir --upgrade pip setuptools wheel \
&& venv/bin/pip install --no-cache-dir -r requirements.txt \
&& venv/bin/pip install --no-cache-dir pycparser \
&& venv/bin/pip install -U --no-cache-dir "pythonnet==2.5.1" \
&& venv/bin/python setup.py install
我检查了 venv/lib/python3.6/site-packages,可以看到这些软件包已安装。但是当我运行这个时: venv/lib/python3.6 src/my_app/app.py
我收到以下错误: /bin/sh: 3: venv/lib/python3.6: 权限被拒绝
我尝试在 lib 目录中运行 chmod +x * ,错误代码发生了变化,但我仍然遇到相同的错误。我不确定我必须做什么才能让它发挥作用。有什么想法吗?
如果您想访问文件夹或文件...使用 chmod
sudo chmod -R 777 ./.venv/