鱼C论坛

 找回密码
 立即注册
查看: 933|回复: 6

[已解决]C# 想调用 python 文件

[复制链接]
发表于 2023-8-18 11:36:39 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
在C#中想调用  python 文件 ,    使用了IronPython 库, 但是如果 遇到 python文件 中 引用 了第三方库时,会报错;  


各路大神有没有更好的解决办法 ,    【python不想打包成exe,    C# 程序 最终会在没有python环境的电脑 上运行;】
最佳答案
2023-8-18 19:18:41
python 能实现的 c#还不能实现?非得这么搞下。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-8-18 11:36:59 | 显示全部楼层
你可以尝试使用Python的subprocess模块来调用Python文件。subprocess模块允许你在C#中启动一个新的进程,并在该进程中运行Python脚本。这样你就可以避免使用IronPython库,从而解决第三方库引用的问题。

下面是一个示例代码,展示了如何使用subprocess模块在C#中调用Python文件:

  1. using System;
  2. using System.Diagnostics;

  3. class Program
  4. {
  5.     static void Main()
  6.     {
  7.         ProcessStartInfo start = new ProcessStartInfo();
  8.         start.FileName = "python"; // Python解释器的路径
  9.         start.Arguments = "path_to_your_python_script.py"; // Python脚本的路径
  10.         start.UseShellExecute = false;
  11.         start.RedirectStandardOutput = true;

  12.         using (Process process = Process.Start(start))
  13.         {
  14.             using (StreamReader reader = process.StandardOutput)
  15.             {
  16.                 string result = reader.ReadToEnd();
  17.                 Console.WriteLine(result);
  18.             }
  19.         }
  20.     }
  21. }
复制代码


在这个示例中,你需要将 python 替换为你的Python解释器的路径,并将 path_to_your_python_script.py 替换为你的Python脚本的路径。

这样,你就可以在没有Python环境的电脑上运行C#程序,并调用Python文件了。注意,你需要确保目标电脑上已经安装了Python解释器。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-8-18 12:18:56 | 显示全部楼层
isdkz 发表于 2023-8-18 11:36
你可以尝试使用Python的subprocess模块来调用Python文件。subprocess模块允许你在C#中启动一个新的进程,并 ...

如果 C# 最后打包成exe 发给 没有python环境 的电脑 ,能正常运行吗
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-8-18 13:37:20 | 显示全部楼层
有以下几种解决办法:

1.使用Python的subprocess模块:你可以使用C#的Process.Start()方法来调用Python的命令行界面,并通过命令行参数执行Python脚本。这种方式可以确保使用Python的完整环境,包括第三方库的支持。示例代码如下:
  1. using System.Diagnostics;

  2. class Program
  3. {
  4.     static void Main(string[] args)
  5.     {
  6.         string pythonExePath = @"C:\Python\python.exe";
  7.         string pythonScriptPath = @"C:\path\to\your\python\script.py";

  8.         Process process = new Process();
  9.         process.StartInfo.FileName = pythonExePath;
  10.         process.StartInfo.Arguments = pythonScriptPath;
  11.         process.Start();
  12.         process.WaitForExit();
  13.     }
  14. }
复制代码

2.使用Anaconda或Miniconda:在没有Python环境的电脑上,你可以安装Anaconda或Miniconda,并将Python环境和所需的第三方库打包成一个独立的虚拟环境。然后,在C#程序中调用该虚拟环境中的Python解释器来执行Python脚本。


3.将Python代码转换为C#代码:如果你不希望依赖Python环境或打包成exe文件,可以考虑将Python代码转换为C#代码,并使用C#编译器将其编译为可执行文件。这样可以完全摆脱Python环境的依赖。
以上是几种常见的解决办法,你可以根据实际情况选择适合的方法来调用Python文件并在没有Python环境的电脑上运行C#程序。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-8-18 19:18:41 | 显示全部楼层    本楼为最佳答案   
python 能实现的 c#还不能实现?非得这么搞下。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-8-22 09:29:27 | 显示全部楼层
ba21 发表于 2023-8-18 19:18
python 能实现的 c#还不能实现?非得这么搞下。

C# 不太会
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-8-22 09:39:57 | 显示全部楼层

查资料,学下。也这比来的好吧。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-4-27 22:19

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表