编程:C#调用Python模块

当下,C#与Python都是比较热门的计算机编程语言,他们各有优缺点,如果能让他们互相配合工作,那是多么美好的事情,今天我来讲解一下如何利用C#来调用Python。
如果让C#支持调用Python模块,我们首先需要安装一些扩展,这里推荐使用IronPython库。
第一步,我们需要下载IronPython库的安装包,这里请大家移步官网 http://ironpython.codeplex.com/ ,下载并安装相关库文件。

第二步,我们新建一个C#控制台测试项目,并将IronPython安装目录中的如下DLL文件添加进项目引用。

第三步,我们分别编写C#代码,并添加Python代码文件到项目中,代码如下。
C#代码部分
using System;
using IronPython.Hosting; //导入IronPython库文件
using Microsoft.Scripting.Hosting; //导入微软脚本解释库文件 namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
ScriptRuntime pyRuntime = Python.CreateRuntime(); //创建一下运行环境
dynamic obj=pyRuntime.UseFile("debug.py"); //调用一个Python文件
int num1, num2;
Console.Write("Num1:");
num1 = Convert.ToInt32(Console.ReadLine());
Console.Write("Num2:");
num2 = Convert.ToInt32(Console.ReadLine());
int sum = obj.add(num1, num2); //调用Python文件中的求和函数
Console.Write("Sum:");
Console.WriteLine(sum);
}
}
}
Python代码部分
def add(num1,num2):
return num1+num2;
编译时需要修改工程中的Python文件属性如下图,否则会报出文件无法定位的错误,运行结果如下右图。

通过上面的实验过程,大家可以很容易的使用C#调用Python文件,但是不知道大家是否会和我产生相同的疑惑,如何把C#的可执行程序与Python文件打包呢? 如果是简单的压缩,可能会缺失运行所需的库文件,如果你也对此有疑问,请留意博客的下一篇文章:利用Visual Studio寻找程序必要的运行库文件。
编程:C#调用Python模块的更多相关文章
- 嵌入Python系列 | 调用Python模块中无参数函数
开发环境 Python版本:3.6.4 (32-bit) 编辑器:Visual Studio Code C++环境:Visual Studio 2013 需求说明 在用VS2013编写的Win32程序 ...
- 嵌入Python | 调用Python模块中有参数的函数
开发环境Python版本:3.6.4 (32-bit)编辑器:Visual Studio CodeC++环境:Visual Studio 2013 需求说明前一篇<在C++中嵌入Python|调 ...
- 嵌入Python | 调用Python模块中无参数的函数
开发环境 Python版本:3.6.4 (32-bit) 编辑器:Visual Studio Code C++环境:Visual Studio 2013 需求说明 在用VS2013编写的Win32程序 ...
- 浅析 C++ 调用 Python 模块
浅析 C++ 调用 Python 模块 作为一种胶水语言,Python 能够很容易地调用 C . C++ 等语言,也能够通过其他语言调用 Python 的模块. Python 提供了 C++ 库,使得 ...
- c#项目调用Python模块的方法
将Python模块用pyinstaller打包成exe程序 下载安装UPX((http://upx.sourceforge.net/)) ,并把路径加到环境变量中. UPX是开源的加壳和压缩exe的程 ...
- shell脚本调用python模块
python helloworld.py代码为 # coding:utf-8 from __future__ import print_function import sys print(sys.pa ...
- R调用python模块
明明已经安装了sctransfer,但仍然显示没有该模块 Error in py_module_import(module, convert = convert) : ModuleNotFoundEr ...
- linux下python调用c模块
在C调用Python模块时需要初始化Python解释器,导入模块等,但Python调用C模块却比较简单,下面还是以helloWorld.c 和 main.py 做一说明: (1)编写C代码,hel ...
- Python 模块chardet安装 setup.py
http://pypi.python.org/pypi/chardet#downloads 下载chardet-2.*.*.tar.gz:解压到site-package文件夹, Python及其一些模 ...
随机推荐
- IOS如何延长LaunchScreen.xib启动画面
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launc ...
- C++编程规范之18:尽可能局部地声明变量
摘要: 避免作用域膨胀,对于需求如此,对于变量也是如此.变量将引入状态,而我们应该尽可能少地处理状态,变量的生存期也是越短越好. 变量的生存期超过必需的长度时会产生以下几个缺点: 1. 它们 ...
- I/O多路转接 --- UNIX环境高级编程
I/O多路转接技术:先构造一张有关描述符的列表,然后调用一个函数,知道这些描述符中的一个已准备好进行I/O时,给函数才返回.在返回时,它告诉进程哪些描述符已准备好可以进行I/O. poll.selec ...
- [Angular 2] @ViewChild to access Child component's method
When you want to access child component's method, you can use @ViewChild in the parent: Parent Compo ...
- iOS-BLE蓝牙开发持续更新
文/煜寒了(简书作者)原文链接:http://www.jianshu.com/p/84b5b834b942著作权归作者所有,转载请联系作者获得授权,并标注“简书作者”. 在写这个博客之前,空余时间抽看 ...
- [小工具] Command-line CPU Killer(附源码及下载链接)
博主有次在拆卸自己的笔记本电脑后,发现电脑如果静置时间长了有时会重启,但奇怪的是当我自己在电脑前工作的时候从来没有重启过.据此推测可能 CPU 完全空闲的时候风扇完全停转了,虽然 CPU 温度不高,但 ...
- mybati之运行过程
mybatis其实就只有两个配置文件(mybatis-config.xml与mapper.xml) mybatis-config.xml配置基本的数据,和数据源,全局参数 mapper.xml 多个s ...
- 【转】IOS缓存机制详解
人魔七七:http://www.cnblogs.com/qiqibo/ 为什么要有缓存 应用需要离线工作的主要原因就是改善应用所表现出的性能.将应用内容缓存起来就可以支持离线.我们可以用两种不同的缓存 ...
- 【回顾整理】HTML+CSS个的两个实战项目
一:麦子商城首页制作 代码: <!DOCTYPE html> <html> <head lang="en"> <meta charset= ...
- 华为 oj 表示数字(代码有参考)理解算法设计
虽然是初级题目,但是 也不是太容易就做出来的 还是用c++ 好些 因为c++ string 是可以存储到缓冲区的, 字符串长度可以变化 参考了某神的代码 和我的思路一样 ,就拿来主义了,挺经典的一道面 ...