在Docker容器中运行Python脚本时没有json模块

0 投票
2 回答
1257 浏览
提问于 2025-04-18 09:36

我正在尝试在一个Docker容器中运行一个简单的Python脚本,这个脚本需要一个JSON字符串作为参数。但是我遇到了以下错误:

Traceback (most recent call last):
  File "/root/simple.py", line 2, in <module>
    import json
ImportError: No module named json

我使用的是标准的ubuntu:12.04镜像。以下是我启动容器的方式:

docker run -v $(pwd)/:/root/ ubuntu:12.04 python /root/simple.py '[{"hi":"bye"}]' 

我的 simple.py 脚本非常简单:

import sys
import json

configs = json.loads(sys.argv[1])

print configs

def read_option_keys(json_file):
    json_file[0]["new"] = None
    print json.dumps(json_file)

read_option_keys(configs)

你知道为什么它没有按预期返回结果吗:

[{u'hi': u'bye'}]
[{"hi": "bye", "new": null}]

2 个回答

0

Docker 是一种容器技术,这意味着你的 Python 脚本对外面的世界一无所知。现在你在运行一个 Ubuntu 的镜像,但这个镜像里没有 Python 的标准模块。你应该使用一个 Python 的镜像,或者在你的 Ubuntu 镜像里添加 Python。

1

我自己解决了这个问题。Ubuntu的镜像非常简单,啥都没有。我下载了dockerfile/python这个镜像,现在一切正常了。

撰写回答