python-3.x - Docker 中的 subprocess.check_output 失败
问题描述
以前曾提出过类似的问题,但这些问题的解决方案并不能解决我自己的问题。我有一个依赖于基础 repo 的 repo,借此连接到 neo4j 数据库。我对基础回购工作的测试。我拥有的仓库(转换文件)已经证明可以在本地工作。当我在 Docker 中运行 repo 时,我得到一个FileNotFoundError
从基础 repo 中抛出的:
基础回购模块
def get_docker_host_ip(self):
z = subprocess.check_output(['ip', '-4', 'route', 'list', 'match', '0/0'])
z = z.decode()[len('default via '):]
return z[: z.find(' ')]
追溯:
Traceback (most recent call last):
File "/opt/app/src/myscript.py", line 252, in <module>
myModule = My_Module(args)
File "/opt/app/src/myscript.py", line 45, in __init__
self.neo4jadapter = Neo4jAdapter()
File "/opt/app/base/base/neo4j_adapter.py", line 19, in __init__
neo4j_host = self.get_docker_host_ip()
File "/opt/app/base/base/neo4j_adapter.py", line 51, in get_docker_host_ip
z = subprocess.check_output(['ip', '-4', 'route', 'list', 'match', '0/0'])
File "/usr/lib/python3.7/subprocess.py", line 395, in check_output
**kwargs).stdout
File "/usr/lib/python3.7/subprocess.py", line 472, in run
with Popen(*popenargs, **kwargs) as process:
File "/usr/lib/python3.7/subprocess.py", line 775, in __init__
restore_signals, start_new_session)
File "/usr/lib/python3.7/subprocess.py", line 1522, in _execute_child
raise child_exception_type(errno_num, err_msg, err_filename)
FileNotFoundError: [Errno 2] No such file or directory: 'ip': 'ip'
对于subprocess.check_output
,我也shell=True
按照其他帖子的推荐添加了,但并没有什么不同:
z = subprocess.check_output(['ip', '-4', 'route', 'list', 'match', '0/0'], shell=True)
此 Traceback 仅在我在 Docker 中运行脚本时发生。我哪里错了?
解决方案
感谢@DavidMaze 的评论,该ip
工具需要通过 Docker 安装,例如:
RUN apt-get install iproute2
推荐阅读
- c# - 强制窗口聚焦在 C# 中,而不仅仅是让它在任务栏中闪烁橙色
- node.js - AWS DynamoDB - 如何使用 FilterExpression?
- tensorflow - 为什么我收到此错误:logits 和标签必须具有相同的形状((None,2)与(None,1))?
- sorting - 测试台不工作。modelsim 中的 z 和 x 状态
- twig - options.disabled == true 给出致命错误
- outlook - 从 Outlook 缓存中删除 LegacyExchangeDN 条目?
- python - 如何从月份和年份列创建日期时间索引,但没有日期?
- django - django-elasticsearch-dsl 不同步嵌套归档
- c# - 使用 Microsoft Graph SDK 获取具有特定电子邮件域的所有用户
- css - 如何通过使用 css 选择器从父 div 访问子 div 来为子 div 应用不显示