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

Azure Functions部署后无法引用Python项目中共享库c_lib的问题

Azure Functions部署后无法引用Python项目中共享库c_lib的问题

嘿,我之前也踩过类似的坑——本地测试全过,一部署到Azure就找不到共享库,给你几个实用的解决思路,应该能帮你搞定:

1. 先确认部署后的文件结构是否正确

首先得搞清楚Azure上的文件是不是传全了。你可以通过Azure门户的高级工具(Kudu)(在Function App的「开发工具」里找),进入/home/site/wwwroot/目录检查:

  • 能不能看到c_lib文件夹?
  • FunctionA的位置是不是和c_lib保持了本地的层级关系?

如果c_lib没出现在wwwroot里,那肯定找不到。这时候要调整部署配置:

  • 用VS Code部署的话,检查.vscode/settings.json里的azureFunctions.deploySubpath,要设为项目根目录(比如./),而不是只部署a_app;
  • 用Azure CLI的func deploy命令时,确保在myproject根目录下执行,这样所有子目录都会被上传。

2. 手动添加Python搜索路径(快速救急)

如果c_lib已经在wwwroot里,但Python还是找不到,大概率是运行时的sys.path没包含c_lib所在的目录。你可以在FunctionA/__init__.py的最开头加上这段代码:

import sys
import os
# 根据部署后的目录层级调整路径,比如c_lib和FunctionA在wwwroot同层级时用这行
sys.path.append(os.path.abspath(os.path.join(os.path.dirname(__file__), '../')))

这段代码会把wwwroot目录加入Python的搜索路径,之后from c_lib.foundation_utility.jwt_enforced_permissions import JWTEnforcedPermissions就能正常找到模块了。

3. 把c_lib打包成本地包(更规范的长期方案)

如果不想每次都手动改路径,可以把c_lib变成可安装的本地Python包:

  1. 在c_lib目录下创建setup.py文件,内容如下:
from setuptools import setup, find_packages

setup(
    name="c_lib",
    version="0.1",
    packages=find_packages(),
)
  1. 在项目根目录的requirements.txt里加一行:
-e ./c_lib

这样不管是本地测试还是部署到Azure,pip都会把c_lib安装到Python的site-packages里,之后的导入语句就和普通第三方包一样,不用再担心路径问题。

4. 检查Python版本是否一致

最后别忘了确认Azure上的Python版本和你本地开发用的版本完全一致,版本不兼容也可能导致奇怪的导入错误。你可以在Function App的「配置」页面查看和调整Python版本。

备注:内容来源于stack exchange,提问作者steambun

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.17 11:23:17