我正在尝试构建一个Docker容器,我想在其中使用pip
安装一些Python模块(最终将需要这些模块来构建应用程序)。我写了以下Dockerfile
:
FROM ubuntu:16.04
RUN echo "===> Adding prerequisites..." && \
apt update -y && \
DEBIAN_FRONTEND=noninteractive \
apt install --no-install-recommends -y -q \
build-essential \
python python-pip python-dev && \
pip install --upgrade setuptools pip wheel && \
pip install --upgrade pyyaml
# Default command
CMD [ "echo", "Hello!" ]
构建(docker build -t app:0 .
)时得到以下输出:
Sending build context to Docker daemon 10.26MB
Step 1/3 : FROM ubuntu:16.04
---> 4a689991aa24
Step 2/3 : RUN echo "===> Adding prerequisites..." && apt update -y && DEBIAN_FRONTEND=noninteractive apt install --no-install-recommends -y -q build-essential python python-pip python-dev && pip install --upgrade setuptools pip wheel && pip install --upgrade pyyaml
---> Running in 9d813b5bc68d
===> Adding prerequisites...
WARNING: apt does not have a stable CLI interface. Use with caution in scripts.
Get:1 http://archive.ubuntu.com/ubuntu xenial InRelease [247 kB]
[More apt output, no errors here]
Get:18 http://archive.ubuntu.com/ubuntu xenial-backports/universe amd64 Packages [8532 B]
Fetched 15.5 MB in 1s (11.3 MB/s)
Reading package lists...
Building dependency tree...
Reading state information...
All packages are up to date.
WARNING: apt does not have a stable CLI interface. Use with caution in scripts.
Reading package lists...
Building dependency tree...
Reading state information...
The following additional packages will be installed:
binutils bzip2 ca-certificates cpp cpp-5 dpkg-dev g++ g++-5 gcc gcc-5
libasan2 libatomic1 libc-dev-bin libc6-dev libcc1-0 libcilkrts5 libdpkg-perl
libexpat1 libexpat1-dev libffi6 libgcc-5-dev libgdbm3 libgmp10 libgomp1
libisl15 libitm1 liblsan0 libmpc3 libmpfr4 libmpx0 libperl5.22 libpython-dev
libpython-stdlib libpython2.7 libpython2.7-dev libpython2.7-minimal
libpython2.7-stdlib libquadmath0 libsqlite3-0 libssl1.0.0 libstdc++-5-dev
libtsan0 libubsan0 linux-libc-dev make mime-support openssl patch perl
perl-modules-5.22 python-minimal python-pip-whl python2.7 python2.7-dev
python2.7-minimal xz-utils
Suggested packages:
binutils-doc bzip2-doc cpp-doc gcc-5-locales debian-keyring g++-multilib
g++-5-multilib gcc-5-doc libstdc++6-5-dbg gcc-multilib manpages-dev autoconf
automake libtool flex bison gdb gcc-doc gcc-5-multilib libgcc1-dbg
libgomp1-dbg libitm1-dbg libatomic1-dbg libasan2-dbg liblsan0-dbg
libtsan0-dbg libubsan0-dbg libcilkrts5-dbg libmpx0-dbg libquadmath0-dbg
glibc-doc libstdc++-5-doc make-doc ed diffutils-doc perl-doc
libterm-readline-gnu-perl | libterm-readline-perl-perl python-doc python-tk
python2.7-doc binfmt-support
Recommended packages:
fakeroot libalgorithm-merge-perl manpages manpages-dev
libfile-fcntllock-perl file netbase rename python-all-dev python-setuptools
python-wheel
The following NEW packages will be installed:
binutils build-essential bzip2 ca-certificates cpp cpp-5 dpkg-dev g++ g++-5
gcc gcc-5 libasan2 libatomic1 libc-dev-bin libc6-dev libcc1-0 libcilkrts5
libdpkg-perl libexpat1 libexpat1-dev libffi6 libgcc-5-dev libgdbm3 libgmp10
libgomp1 libisl15 libitm1 liblsan0 libmpc3 libmpfr4 libmpx0 libperl5.22
libpython-dev libpython-stdlib libpython2.7 libpython2.7-dev
libpython2.7-minimal libpython2.7-stdlib libquadmath0 libsqlite3-0
libssl1.0.0 libstdc++-5-dev libtsan0 libubsan0 linux-libc-dev make
mime-support openssl patch perl perl-modules-5.22 python python-dev
python-minimal python-pip python-pip-whl python2.7 python2.7-dev
python2.7-minimal xz-utils
0 upgraded, 60 newly installed, 0 to remove and 0 not upgraded.
Need to get 79.5 MB of archives.
After this operation, 251 MB of additional disk space will be used.
Get:1 http://archive.ubuntu.com/ubuntu xenial/main amd64 libgdbm3 amd64 1.8.3-13.1 [16.9 kB]
[More apt output, no errors here]
Get:60 http://archive.ubuntu.com/ubuntu xenial-updates/universe amd64 python-pip all 8.1.1-2ubuntu0.4 [144 kB]
debconf: delaying package configuration, since apt-utils is not installed
Fetched 79.5 MB in 1s (66.0 MB/s)
Selecting previously unselected package libgdbm3:amd64.
(Reading database ... 4768 files and directories currently installed.)
Preparing to unpack .../libgdbm3_1.8.3-13.1_amd64.deb ...
Unpacking libgdbm3:amd64 (1.8.3-13.1) ...
[Even more apt output]
Processing triggers for libc-bin (2.23-0ubuntu10) ...
Processing triggers for ca-certificates (20170717~16.04.1) ...
Updating certificates in /etc/ssl/certs...
148 added, 0 removed; done.
Running hooks in /etc/ca-certificates/update.d...
done.
Collecting setuptools
Downloading https://files.pythonhosted.org/packages/96/06/c8ee69628191285ddddffb277bd5abdf769166e7a14b867c2a172f0175b1/setuptools-40.4.3-py2.py3-none-any.whl (569kB)
Collecting pip
Downloading https://files.pythonhosted.org/packages/c2/d7/90f34cb0d83a6c5631cf71dfe64cc1054598c843a92b400e55675cc2ac37/pip-18.1-py2.py3-none-any.whl (1.3MB)
Collecting wheel
Downloading https://files.pythonhosted.org/packages/5a/9b/6aebe9e2636d35d1a93772fa644c828303e1d5d124e8a88f156f42ac4b87/wheel-0.32.2-py2.py3-none-any.whl
Installing collected packages: setuptools, pip, wheel
Found existing installation: pip 8.1.1
Not uninstalling pip at /usr/lib/python2.7/dist-packages, outside environment /usr
Successfully installed pip-18.1 setuptools-40.4.3 wheel-0.32.2
Traceback (most recent call last):
File "/usr/bin/pip", line 9, in <module>
from pip import main
ImportError: cannot import name main
The command '/bin/sh -c echo "===> Adding prerequisites..." && apt update -y && DEBIAN_FRONTEND=noninteractive apt install --no-install-recommends -y -q build-essential python python-pip python-dev && pip install --upgrade setuptools pip wheel && pip install --upgrade pyyaml' returned a non-zero code: 1
但是,如果我从Dockerfile中删除对pip
的第二次调用,则似乎容器已成功构建。
任何人都可以帮助我了解引发构建错误的原因吗?提前非常感谢!
答案 0 :(得分:1)
在升级点子时,这似乎是一个问题,如您在此处看到的:
https://github.com/pypa/pip/issues/5240
代替运行
pip install --upgrade setuptools pip wheel
尝试更改为
python -m pip install --upgrade setuptools pip wheel
根据建议:
然后将构建docker映像而不会出现错误。