You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在.NET 6独立模式Azure Function中使用Python.NET遇模块缺失问题

解决Azure Functions中Python.NET找不到本地Python模块的问题

问题根源

Azure Functions的运行目录逻辑和普通控制台应用不一样,默认Python引擎不会自动扫描bin目录下的模块,再加上.NET 6独立模式的部署特性,导致模块路径没被加入Python的搜索路径里。

具体解决步骤

  • 手动添加模块路径到Python的sys.path
    修改你的C#代码,在初始化Python引擎后,把模块所在目录添加到Python的系统搜索路径中:

    Runtime.PythonDLL = @"python310.dll";
    PythonEngine.Initialize();
    
    // 获取当前函数的运行工作目录
    var workingDir = System.IO.Directory.GetCurrentDirectory();
    // 拼接wmbus2json模块所在的bin目录路径
    var moduleDir = System.IO.Path.Combine(workingDir, "bin");
    
    // 导入Python的sys模块,添加路径
    dynamic sys = Py.Import("sys");
    sys.path.append(moduleDir);
    
    // 现在再导入目标模块
    var parser = Py.Import(@"wmbus2json");
    

    如果你的模块直接放在函数的工作目录下,直接把workingDir添加到sys.path就行。

  • 确保Python模块文件被复制到输出目录
    在Azure Functions项目里,找到wmbus2json相关的所有Python文件(包括模块文件夹、__init__.py等),右键选择「属性」,把「复制到输出目录」设置为「始终复制」或者「如果较新则复制」,这样构建时文件会同步到bin目录。

  • 检查Python环境一致性

    • 保证本地运行Azure Functions时用的Python3.10版本,和你之前控制台应用的版本完全一致(包括32/64位)。
    • 如果python310.dll路径不确定,直接写完整绝对路径,比如@"C:\Python310\python310.dll",避免环境变量导致的路径错误。
  • 独立模式部署的额外注意
    要是用.NET 6独立模式发布,得确保Python运行时的相关文件(比如python310.dll、Python的Lib和DLLs目录)要么一起打包到发布目录,要么运行环境里已经安装了对应版本的Python。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 16:12:57