You need to enable JavaScript to run this app. C#中IronPython运行Python脚本报No module named requests错误求助
优惠活动
大模型
产品
解决方案
定价
更多

C#中IronPython运行Python脚本报No module named requests错误求助

IronPython导入第三方包报错的修复方案

核心误区说明

你当前遇到导入失败的核心原因有两个,哪怕你把conda环境路径加对位置也无法正常运行:

  • 你添加的C:\Users\George\.conda\envs\spenv2是CPython(标准Python解释器)的虚拟环境,里面安装的requests是针对CPython编译的二进制产物,自带C扩展依赖。IronPython是跑在.NET运行时上的Python实现,根本无法直接加载CPython格式的二进制扩展包
  • 即便抛开格式兼容问题,Python解释器查找第三方依赖的默认路径是环境目录下的Lib\site-packages子文件夹,你添加的环境根目录下本身就不会直接存放第三方包文件,自然搜索不到requests模块

分步修复操作

  • 第一步,移除你代码里无效的conda环境路径添加逻辑:searchPaths.Add(@"C:\Users\George\.conda\envs\spenv2");这行代码对IronPython没有任何实际作用
  • 第二步,为IronPython单独安装兼容版本的依赖包:
    1. 定位你项目中NuGet包安装的IronPython可执行文件路径,通常在项目根目录的packages\IronPython.2.7.11\tools文件夹下
    2. 打开系统命令行,切换到上述路径后执行IronPython自带的pip安装命令:ipy.exe -m pip install requests==2.20.0(必须选择无C扩展、兼容IronPython 2.7的纯Python版本,高版本requests带C编译组件,无法在IronPython下运行)
    3. 安装完成后,pip会自动把兼容版的requests存放到IronPython自带的Lib\site-packages路径下
  • 第三步,在C#代码中补全正确的搜索路径,安装完成后记得调用engine.SetSearchPaths(searchPaths)把路径列表回写给脚本引擎,核心代码片段参考:
    ScriptEngine engine = Python.CreateEngine();
    var searchPaths = engine.GetSearchPaths();
    // 添加IronPython安装的第三方包路径
    searchPaths.Add(@"你的项目根目录\packages\IronPython.2.7.11\Lib\site-packages");
    // 添加你存放业务Python脚本的目录
    searchPaths.Add(@"D:\Apps\Data Destinations\Scraping\ScrapeProjects\Job1.v4_For_IronPython_CSharp");
    // 将更新后的搜索路径回写到引擎实例
    engine.SetSearchPaths(searchPaths);
    
  • 第四步,校验内置模块兼容性:脚本里用到的time、socket、random都是IronPython 2.7自带的内置模块,不需要额外安装依赖,只要requests安装正确即可正常完成导入

额外注意:如果后续需要使用带C扩展的Python包(比如lxml、pandas这类),不要强行在IronPython环境下加载,它完全不支持CPython格式的二进制扩展。这类场景建议切换为Pythonnet方案,直接集成完整的CPython解释器执行脚本,兼容性会好很多。

内容的提问来源于stack exchange,提问作者spacedog

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.22 21:45:03