一段时间以来,我一直在为Python环境使用Dockerfile配方。但是现在我遇到了一个问题。使用miniconda / conda软件安装的python无法找到我通常使用setup.py方法与安装前缀一起安装的某些软件包。仅在删除--prefix规范后,才可以通过tis python解释器找到该软件包。
为了说明这个问题,我在前面提到的dockerfile中有一部分正在使用:
FROM docker.io/nvidia/cuda:10.1-devel-ubuntu18.04 AS devel
RUN apt-get update -y && \
DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends \
g++ \
gcc \
gdb \
git \
pkg-config \
vim \
cmake \
wget && \
rm -rf /var/lib/apt/lists/*
ENV LD_LIBRARY_PATH=/opt/lib64:${LD_LIBRARY_PATH} \
PATH=/opt/conda/bin:${PATH} \
PKG_CONFIG_PATH=/opt/lib/pkgconfig:${PKG_CONFIG_PATH} \
PYTHONPATH=/opt/lib/python3.7/site-packages:${PYTHONPATH}
RUN wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh -O /opt/miniconda.sh && \
cd /opt && \
chmod +x miniconda.sh && \
./miniconda.sh -b -p /opt/conda && \
rm -f ./miniconda.sh && \
/opt/conda/bin/conda install -y python==3.7.7 numpy pyyaml pytest pyarrow pip
RUN cd /opt && \
git clone https://github.com/pybind/pybind11.git && \
cd pybind11 && \
mkdir build && \
cd build && \
cmake .. -DCMAKE_INSTALL_PREFIX=/usr && \
make -j && \
make -j install && \
cd .. && \
echo $(which python) $(python --version) && \
python setup.py install --prefix=/opt && \
rm -rf ../pybind11
仅当我从命令--prefix
中删除了python setup.py install --prefix=/opt
规范时,才会找到pybind11软件包。更复杂的是,当我指定前缀路径时,其他一些软件包仍然可以使用。
谢谢