首页 > 解决方案 > 没有这样的文件或目录,在 .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#”。

标签: c#pythondockerasp.net-core.net-core

解决方案


我遇到了类似的问题,并且遇到了与您相同的错误。我只是更改了文件名StartInfo.FileName = "python3",然后它开始工作。


推荐阅读