python slim或alpine docker镜像无法使用pipenv安装软件包

如何解决python slim或alpine docker镜像无法使用pipenv安装软件包

我正在尝试为我的python应用程序构建docker容器,但是在通过pipenv安装python软件包时遇到问题。

如果我将基本映像设置为python:3.8.5,则可以工作,但是如果我设置-slim版本或-alpine版本,它们将失败,并出现以下错误:

 Traceback (most recent call last):   File "/usr/local/bin/pipenv",line 8,in <module>
     sys.exit(cli())   File "/usr/local/lib/python3.8/site-packages/pipenv/vendor/click/core.py",line 829,in __call__
     return self.main(*args,**kwargs)   File "/usr/local/lib/python3.8/site-packages/pipenv/vendor/click/core.py",line 782,in main
     rv = self.invoke(ctx)   File "/usr/local/lib/python3.8/site-packages/pipenv/vendor/click/core.py",line 1259,in invoke
     return _process_result(sub_ctx.command.invoke(sub_ctx))   File "/usr/local/lib/python3.8/site-packages/pipenv/vendor/click/core.py",line 1066,in invoke
     return ctx.invoke(self.callback,**ctx.params)   File "/usr/local/lib/python3.8/site-packages/pipenv/vendor/click/core.py",line 610,in invoke
     return callback(*args,**kwargs)   File "/usr/local/lib/python3.8/site-packages/pipenv/vendor/click/decorators.py",line 73,in new_func
     return ctx.invoke(f,obj,*args,line 21,in new_func
     return f(get_current_context(),**kwargs)   File "/usr/local/lib/python3.8/site-packages/pipenv/cli/command.py",line
 232,in install
     retcode = do_install(   File "/usr/local/lib/python3.8/site-packages/pipenv/core.py",line 2052,in
 do_install
     do_init(   File "/usr/local/lib/python3.8/site-packages/pipenv/core.py",line 1305,in
 do_init
     do_install_dependencies(   File "/usr/local/lib/python3.8/site-packages/pipenv/core.py",line 899,in
 do_install_dependencies
     batch_install(   File "/usr/local/lib/python3.8/site-packages/pipenv/core.py",line 796,in
 batch_install
     _cleanup_procs(procs,failed_deps_queue,retry=retry)   File "/usr/local/lib/python3.8/site-packages/pipenv/core.py",line 703,in
 _cleanup_procs
     raise exceptions.InstallError(c.dep.name,extra=err_lines) pipenv.exceptions.InstallError: ERROR: Couldn't install package:
 brotlipy  Package installation failed...

Dockerfile

FROM python:3.8.5-slim

RUN pip install pipenv

WORKDIR /app

COPY ./ /app/

RUN pipenv install --sequential --deploy --verbose

RUN python -m spacy download en_core_web_sm

RUN pip install gunicorn[gevent]

EXPOSE 8080

CMD gunicorn -c src/gunicorn.conf.py  --chdir src wsgi:app

Pipfile

[[source]]
name = "pypi"
url = "https://pypi.org/simple"
verify_ssl = true

[dev-packages]
autopep8 = "*"

[packages]
pytest = "*"
aiomysql = "*"
pytest-asyncio = "*"
spacy = "*"
nltk = "*"
jsonschema = "*"
cachetools = "*"
pycountry = "*"
boto3 = "*"
aiohttp = {extras = ["speedups"],version = "*"}
install = "*"
cchardet = "*"
aiohttp-cors = "*"
pytest-aiohttp = "*"
aiohttp-devtools = "*"
json-logging = "*"

[requires]
python_version = "3.8"

更新:

添加了要编译的软件包后,这次我得到了另一个错误,现在也需要很长时间才能运行。

RUN apk add gcc g++ libffi-dev musl-dev \
Exception information:
Traceback (most recent call last):
  File "/root/.local/share/virtualenvs/app-4PlAip0Q/lib/python3.8/site-packages/pip/_internal/cli/base_command.py",line 216,in _main
    status = self.run(options,args)
  File "/root/.local/share/virtualenvs/app-4PlAip0Q/lib/python3.8/site-packages/pip/_internal/cli/req_command.py",line 182,in wrapper
    return func(self,options,args)
  File "/root/.local/share/virtualenvs/app-4PlAip0Q/lib/python3.8/site-packages/pip/_internal/commands/install.py",line 324,in run
    requirement_set = resolver.resolve(
  File "/root/.local/share/virtualenvs/app-4PlAip0Q/lib/python3.8/site-packages/pip/_internal/resolution/legacy/resolver.py",line 183,in resolve
    discovered_reqs.extend(self._resolve_one(requirement_set,req))
  File "/root/.local/share/virtualenvs/app-4PlAip0Q/lib/python3.8/site-packages/pip/_internal/resolution/legacy/resolver.py",line 388,in _resolve_one
    abstract_dist = self._get_abstract_dist_for(req_to_install)
  File "/root/.local/share/virtualenvs/app-4PlAip0Q/lib/python3.8/site-packages/pip/_internal/resolution/legacy/resolver.py",line 340,in _get_abstract_dist_for
    abstract_dist = self.preparer.prepare_linked_requirement(req)
  File "/root/.local/share/virtualenvs/app-4PlAip0Q/lib/python3.8/site-packages/pip/_internal/operations/prepare.py",line 482,in prepare_linked_requirement
    abstract_dist = _get_prepared_distribution(
  File "/root/.local/share/virtualenvs/app-4PlAip0Q/lib/python3.8/site-packages/pip/_internal/operations/prepare.py",line 91,in _get_prepared_distribution
    abstract_dist.prepare_distribution_metadata(finder,build_isolation)
  File "/root/.local/share/virtualenvs/app-4PlAip0Q/lib/python3.8/site-packages/pip/_internal/distributions/sdist.py",line 33,in prepare_distribution_metadata
    self.req.load_pyproject_toml()
  File "/root/.local/share/virtualenvs/app-4PlAip0Q/lib/python3.8/site-packages/pip/_internal/req/req_install.py",line 503,in load_pyproject_toml
    pyproject_toml_data = load_pyproject_toml(
  File "/root/.local/share/virtualenvs/app-4PlAip0Q/lib/python3.8/site-packages/pip/_internal/pyproject.py",line 95,in load_pyproject_toml
    raise InstallationError(
pip._internal.exceptions.InstallationError: Disabling PEP 517 processing is invalid: project specifies a build backend of setuptools.build_meta in pyproject.toml
Removed cryptography==3.0 from https://files.pythonhosted.org/packages/bf/ac/552fc8729d90393845cc3a2062facf4a89dcbe206fa78771d60ddaae7554/cryptography-3.0.tar.gz#sha256=8e924dbc025206e97756e8903039662aa58aa9ba357d8e1d8fc29e3092322053 (from -r /tmp/pipenv-9avbndah-requirements/pipenv-ituvdg4a-requirement.txt (line 1)) from build tracker '/tmp/pip-req-tracker-roedt7he'
Removed build tracker: '/tmp/pip-req-tracker-roedt7he'
Removing intermediate container de278d8d660a
 ---> bb539a91d593
Step 7/10 : RUN python -m spacy download en_core_web_sm
 ---> Running in d568290d25da
/usr/local/bin/python: No module named spacy

解决方法

使用

可以将问题最小化到Dockerfile
FROM python:3.8.5-slim
RUN pip install --no-cache-dir brotlipy

如果运行此命令,则会收到错误消息

...
unable to execute 'gcc': No such file or directory
error: command 'gcc' failed with exit status 1
...

-slim-alpine映像不包括C编译器,而python:3.8.5映像则包括。如果安装C编译器,则可能会遇到其他错误,例如缺少limit.sffi.h和C ++标准库。

这是使用-alpine图像的最小工作示例。

FROM python:3.8.5-alpine
RUN apk add gcc g++ libffi-dev musl-dev \
    && python -m pip install --no-cache-dir brotlipy \
    && apk del gcc g++ libffi-dev musl-dev

这是-slim图片的完整示例。使用pipenv run python运行spacy部分。

FROM python:3.8.5-slim

ARG DEBIAN_FRONTEND="noninteractive"

RUN pip install pipenv

WORKDIR /app

COPY ./ /app/

RUN apt-get update \
    && apt-get install --yes --no-install-recommends \
        gcc g++ libffi-dev \
    && pipenv install --sequential --deploy --verbose \
    && apt-get autoremove --yes gcc g++ libffi-dev \
    && rm -rf /var/lib/apt/lists/*

RUN pipenv run python -m spacy download en_core_web_sm

RUN pipenv install gunicorn[gevent]

EXPOSE 8080

CMD gunicorn -c src/gunicorn.conf.py  --chdir src wsgi:app

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


依赖报错 idea导入项目后依赖报错,解决方案:https://blog.csdn.net/weixin_42420249/article/details/81191861 依赖版本报错:更换其他版本 无法下载依赖可参考:https://blog.csdn.net/weixin_42628809/a
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下 2021-12-03 13:33:33.927 ERROR 7228 [ main] o.s.b.d.LoggingFailureAnalysisReporter : *************************** APPL
错误1:gradle项目控制台输出为乱码 # 解决方案:https://blog.csdn.net/weixin_43501566/article/details/112482302 # 在gradle-wrapper.properties 添加以下内容 org.gradle.jvmargs=-Df
错误还原:在查询的过程中,传入的workType为0时,该条件不起作用 &lt;select id=&quot;xxx&quot;&gt; SELECT di.id, di.name, di.work_type, di.updated... &lt;where&gt; &lt;if test=&qu
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct redisServer’没有名为‘server_cpulist’的成员 redisSetCpuAffinity(server.server_cpulist); ^ server.c: 在函数‘hasActiveC
解决方案1 1、改项目中.idea/workspace.xml配置文件,增加dynamic.classpath参数 2、搜索PropertiesComponent,添加如下 &lt;property name=&quot;dynamic.classpath&quot; value=&quot;tru
删除根组件app.vue中的默认代码后报错:Module Error (from ./node_modules/eslint-loader/index.js): 解决方案:关闭ESlint代码检测,在项目根目录创建vue.config.js,在文件中添加 module.exports = { lin
查看spark默认的python版本 [root@master day27]# pyspark /home/software/spark-2.3.4-bin-hadoop2.7/conf/spark-env.sh: line 2: /usr/local/hadoop/bin/hadoop: No s
使用本地python环境可以成功执行 import pandas as pd import matplotlib.pyplot as plt # 设置字体 plt.rcParams[&#39;font.sans-serif&#39;] = [&#39;SimHei&#39;] # 能正确显示负号 p
错误1:Request method ‘DELETE‘ not supported 错误还原:controller层有一个接口,访问该接口时报错:Request method ‘DELETE‘ not supported 错误原因:没有接收到前端传入的参数,修改为如下 参考 错误2:cannot r
错误1:启动docker镜像时报错:Error response from daemon: driver failed programming external connectivity on endpoint quirky_allen 解决方法:重启docker -&gt; systemctl r
错误1:private field ‘xxx‘ is never assigned 按Altʾnter快捷键,选择第2项 参考:https://blog.csdn.net/shi_hong_fei_hei/article/details/88814070 错误2:启动时报错,不能找到主启动类 #
报错如下,通过源不能下载,最后警告pip需升级版本 Requirement already satisfied: pip in c:\users\ychen\appdata\local\programs\python\python310\lib\site-packages (22.0.4) Coll
错误1:maven打包报错 错误还原:使用maven打包项目时报错如下 [ERROR] Failed to execute goal org.apache.maven.plugins:maven-resources-plugin:3.2.0:resources (default-resources)
错误1:服务调用时报错 服务消费者模块assess通过openFeign调用服务提供者模块hires 如下为服务提供者模块hires的控制层接口 @RestController @RequestMapping(&quot;/hires&quot;) public class FeignControl
错误1:运行项目后报如下错误 解决方案 报错2:Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.8.1:compile (default-compile) on project sb 解决方案:在pom.
参考 错误原因 过滤器或拦截器在生效时,redisTemplate还没有注入 解决方案:在注入容器时就生效 @Component //项目运行时就注入Spring容器 public class RedisBean { @Resource private RedisTemplate&lt;String
使用vite构建项目报错 C:\Users\ychen\work&gt;npm init @vitejs/app @vitejs/create-app is deprecated, use npm init vite instead C:\Users\ychen\AppData\Local\npm-