c# - 没有这样的文件或目录,在 .net core 中运行控制台应用程序时无法在 docker 容器中找到 Python.exe
问题描述
我有一个 .net Core(2.2 版)控制台应用程序,它通过命令行执行 python 脚本。但是,当我 dockerize 项目时,我得到一个文件未找到异常。从错误中,dockerized 应用程序无法找到 python.exe 并执行 python 脚本。
如图所示,我已经从 dockerfile 安装了 python。另外,我尝试使用命令“docker exec -it /bin/bash”来查找 python.exe 并更改 .Net Core 程序中给出的路径。
.Net-Core 代码:
System.Diagnostics.Process process = new System.Diagnostics.Process();
System.Diagnostics.ProcessStartInfo startInfo = new System.Diagnostics.ProcessStartInfo();
startInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden;
startInfo.FileName = "python.exe";
startInfo.Arguments = "myScript.py";
process.StartInfo = startInfo;
process.Start();
蟒蛇代码:
print("Hello c#")
码头文件:
FROM microsoft/dotnet:2.2-aspnetcore-runtime AS base
WORKDIR /app
EXPOSE 80
EXPOSE 443
FROM python:3.7
FROM microsoft/dotnet:2.2-sdk AS build
ENV http_proxy=http://XXX.XXX.XX.XX:XXXX
ENV https_proxy=http://XXX.XXX.XX.XX:XXXX
WORKDIR /src
COPY ["myCode/MyProject.csproj"]
RUN dotnet restore "myCode/MyProject.csproj"
COPY . .
WORKDIR "/src/myCode"
RUN dotnet build "MyProject.csproj" -c Release -o /app
ENV http_proxy=
ENV https_proxy=
FROM build AS publish
RUN dotnet publish "MyProject.csproj" -c Release -o /app
FROM base AS final
WORKDIR /app
COPY --from=publish /app .
ENTRYPOINT ["dotnet", "MyProject.dll", "python"]
预期输出:来自控制台的“Hello C#”。
解决方案
我遇到了类似的问题,并且遇到了与您相同的错误。我只是更改了文件名StartInfo.FileName = "python3"
,然后它开始工作。
推荐阅读
- typescript - 在 Loopback 4 中使用服务
- reactjs - 自定义反应钩子的奇怪行为
- python - 使用默认值验证 jsonschema,其中输入可以是对象和字符串
- sql - 我想用条件提取缺席
- java - 在出现 redis 连接问题的情况下,Hibernate 中的断路器 L2 缓存
- mysql - 无法连接到 AWS RDS MySQL 实例
- android - 如何在 Android 应用程序中发现前台的 Activity 是什么?
- spring - 列出所有已部署的 rest 端点(spring-boot、tomcat)
- javascript - 是否可以从客户端的 blobstorage 中获取 utf8arrary
- wordpress - 在 save_post 挂钩中获取新保存的帖子的类别