在 Docker 中使用 PYTHONDONTWRITEBYTECODE 有什么缺点吗?

flo*_*urr 25 python python-3.x docker

在很多基于 Python 的 Docker 教程(例如:this one)中,他们使用该选项PYTHONDONTWRITEBYTECODE是为了让 Python 避免在导入源模块时编写 .pyc 文件(这相当于指定了 -B 选项)。

设置此选项有哪些风险和优势?

hek*_*mgl 16

当您在容器中运行单个 python 进程时,它在其生命周期内不会产生其他 python 进程本身,那么这样做就没有“风险”。

在磁盘上存储字节码用于在第一次调用程序及其依赖库时将 python 编译为字节码,以在以下调用时保存该步骤。在容器中,进程只运行一次,因此设置此选项是有意义的。

  • 因此,最重要的信息是,对于 Docker 项目,此选项在 99% 的情况下都是有用且安全的。正确的? (3认同)
  • @hek2mgl - 如何使用带有 Gunicorn 的 docker 容器,它会生成多个进程。在这种情况下,该进程也只运行一次吗? (3认同)
  • @bartekch 每个进程都必须再次编译字节码。根据您正在执行的操作,这可能是性能问题,也可能不是。或许就这样就好了。我想说测试一下 (3认同)
  • 就像我说的,如果在容器的生命周期内不生成除容器化进程本身之外的其他 python 进程,那就没问题了。 (2认同)