我知道该标题可能会有些混乱,因此为澄清起见:docker容器启动就很好了。当我尝试打开Python时,它不断崩溃。
我的计算机在Ubunutu上运行。这是uname -a的输出:
Linux work-laptop 4.15.0-39-generic #42-Ubuntu SMP
Tue Oct 23 15:48:01 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux
我有一个基于Python:3.6.3映像的docker容器。我还尝试了使用高山图像,杰西图像,苗条图像和拉伸图像以及其他一些3.6版本。他们都有同样的问题。
我运行名为“ nb”的容器,并附加到交互式外壳:
docker-compose run nb sh
容器启动时没有问题,但是当我尝试打开python shell时:
python
我收到一条奇怪的错误消息:
Could not find platform independent libraries <prefix>
Could not find platform dependent libraries <exec_prefix>
Consider setting $PYTHONHOME to <prefix>[:<exec_prefix>]
Fatal Python error: Py_Initialize: Unable to get the locale encoding
ModuleNotFoundError: No module named 'encodings'
Current thread 0x00007f32546ae700 (most recent call first):
Aborted (core dumped)
我已经检查了$ PYTHONPATH和$ PYTHONHOME,它们都未设置。
奇怪的是,如果我指定使用python 2.7:
python2
shell启动没问题。另外,如果我使用任何3.7图像并打开python 3.7外壳,则那里没有问题。问题似乎仅限于3.6
我对此所做的研究告诉我,这可能与环境变量有关。我尝试手动将PYTHONHOME分别设置为这些值
/usr/local/lib
/usr/local/lib/python
/usr/local/lib/python3.6
,结果无变化。唯一的区别是错误消息不再建议设置PYTHONHOME
Fatal Python error: Py_Initialize: Unable to get the locale encoding
ModuleNotFoundError: No module named 'encodings'
Current thread 0x00007f32546ae700 (most recent call first):
Aborted (core dumped)
我认为问题可能出在我的dockerfile中的某个命令上,所以我剥离了所有内容,然后旋转了一个未经过滤的python映像。同样的问题。我重新下载,尝试了其他图像,没有变化。我无法想象所有(或实际上任何)官方python映像都可能导致此问题,因此我猜测问题一定出在我的主机上,但是我找不到任何东西可以解决这个问题。有什么想法吗?
答案 0 :(得分:2)
弄清楚了我的问题。我已经在docker-compose文件中添加了卷装载,该文件将本地项目目录安装到了容器python目录中。
volumes:
- ./nb/python3.6:/usr/local/lib/python3.6
感谢@EelkevandenBos帮助我意识到问题仅限于docker-compose,而在仅使用docker时不存在。此后问题很容易找到。
我忘记了这样做。我对挂载的目标是限制下载python库的时间,因为该映像使用了大量相当大的库,并且每次更改需求列表时,都必须重新下载所有库。我的想法是,即使使用容器,也可以在使用卷的情况下保存并重新加载库,这将减少下载时间。如果有人对如何执行此操作有任何想法,请在评论中让我知道。