VS2017中,实现C#调用.py打包的.exe文件(pytorch网络)

互联网 2021/10/13 14:15:32

两部分:1、使用pyinstaller打包xxx.py的项目文件,生成.exe文件;2、简单C#的交互界面,实现.exe文件的调用与传参(文件名)。c#实现功能:1)点击浏览文件夹,选中文件(文件路径供.exe使用),2)点击浏览文件夹,再选中.exe文件;3)点击,执行.exe文件;显示输出结果…

两部分:1、使用pyinstaller打包xxx.py的项目文件,生成.exe文件;

               2、简单C#的交互界面,实现.exe文件的调用与传参(文件名)。

c#实现功能:1)点击浏览文件夹,选中文件(文件路径供.exe使用),

                       2)点击浏览文件夹,再选中.exe文件;

                      3)点击,执行.exe文件;显示输出结果——string类型(xx.py中,print(“”)的内容)

本文实现的是基于pytorch1.6的python程序打包,(没有大量第三方库的更顺利,步骤一样)

下文中的两个参考链接重要。先看第二个链接,再看前面的打包步骤,以及报错参见第一个链接。

基于pytorch的神经网络程序,打包时注意下面的6、7项(否则.exe调用lib出错)

一、打包:

        1)将文件精简,功能集中到一个main.py中的if __name__=="__main__":函数中,其中需要使用的文件(.txt,.csv,.pt.......)均使用相对路径(放在main.py当前目录下);

        2)传参数,使用sys.args[x]方式,在cmd命令行中可以执行;

        3)cmd中,进入到项目工作环境中,运行代码;

            (参数,空格隔开->args[1] = 'aa', args[2]='text.txt')

 

      4).py文件代码验证无误后,开始打包流程。安装pyinstaller库;

pip install pyinstaller

   5)在当前的环境下,进入需要打包项目(main.py)路径中,执行如下;

       图标若不需要,可以不用-i 以及后面的命令。.ico文件网站有专门的生成网站。

6)在这个项目中会出现buil(生成过程中的)、dist文件夹(结果)与main.spec(后续可能用到)。其中dist中有.所需要的exe文件。

7)在cmd中运行,报出第三方库错误,则需要。修改见:

    (anaconda\envs\xxx\Lib\site-packgs\~~)中的第三库整个文件夹,复制conda虚拟环境中用pyinstaller打包python程序生成exe,调用第三方库_pingfan2014的博客-CSDN博客icon-default.png?t=L9C2https://blog.csdn.net/pingfan2014/article/details/113436472    若找不到.py程序执行需要读取的文件(.txt等)也用上述方法,将文件拷贝到resource文件夹中,并修改.spec文件

二、C#调用实现代码

c#调用python的四种方法(尝试了四种,只详细讲解本人成功的后两种,其余方法只列出,详细用法请自行谷歌百度)_武林大皮虾的博客-CSDN博客_c#调用python

 最简单的,使用了TextBlock、Label、button(触发操作)控件。读取文件夹,使用的openfiler在代码段,这里没有体现。

如下,为浏览文件夹,显示路径的代码。调用.exe参见上一个参考链接(特殊原因,不能全部分享)

using Microsoft.Win32;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
using System.IO;
using System.Diagnostics;


namespace ASR_V0._1
{

    public partial class MainWindow : Window
    {
       
        OpenFileDialog Fp_Wav = new OpenFileDialog();      //使它为全局变量
        OpenFileDialog Fp_Exe = new OpenFileDialog();


        public MainWindow()
        {
            InitializeComponent();
        }

        private void Button_Click(object sender, RoutedEventArgs e)
        {
     
            Fp_Wav.Filter = "音频文件|*.wav";

            if (Fp_Wav.ShowDialog() == true)
            {
                textBlock.Text = Fp_Wav.FileName;
            }
        }

        private void Button1_Click(object sender, RoutedEventArgs e)   /*“浏览”的点击事
        {

            Fp_Exe.Filter = "应用程序|*.exe";

            if (Fp_Exe.ShowDialog() == true)
            {
                textBlock1.Text = Fp_Exe.FileName;   //显示选择的结果
            }

        }

        private void Button2_Click(object sender, RoutedEventArgs e)
        {
           //调用程序
            textBlock2.Text = output;             //显示结果
        }


    }
}

随时随地学软件编程-关注百度小程序和微信小程序
关于找一找教程网

本站文章仅代表作者观点,不代表本站立场,所有文章非营利性免费分享。
本站提供了软件编程、网站开发技术、服务器运维、人工智能等等IT技术文章,希望广大程序员努力学习,让我们用科技改变世界。
[VS2017中,实现C#调用.py打包的.exe文件(pytorch网络)]http://www.zyiz.net/tech/detail-240852.html

上一篇:c# winform 开发工作流程 角色权限设置

下一篇:C#、Qt、MFC,写上位机优先选哪个?

赞(0)
关注微信小程序
程序员编程王-随时随地学编程

扫描二维码或查找【程序员编程王】

可以随时随地学编程啦!

技术文章导航 更多>
扫一扫关注最新编程教程