繁体   English   中英

ModuleNotFoundError: 没有使用 azure 函数 + Python + 私有存储库的名为“x”的模块

[英]ModuleNotFoundError: No module named 'x" using azure functions + Python + private repository

我在使用 python 的 azure 函数上遇到 ModuleNotFoundError 错误。 我想从我的 HttpTrigger init.py 中的私有存储库中调用一个函数。 运行后,私有存储库的实际文件存储在 src 文件夹中:

pip install -r --target=".python_packages/lib/site-packages" requirements.txt

.python_packages 中的 private_repostiroy.egg.link 包含以下值:

/home/runner/work/etl_azure_function/etl_azure_function/src/private-repository

我尝试了多种从私有 git 存储库导入的解决方案,例如:

from ..src import private_repository.package
from ..src.private_repository.package import funtion
import private_repository.function 

我总是收到一个未找到模块的错误,尽管它已通过 Github 操作成功部署。 如何将私有存储库中的功能导入 httptrigger

<project_root>/
 | - requirements.txt
 | - .venv/
 | - .vscode/
 | - .python_packages
 | - HttpTrigger/
 | | - __init__.py
 | | - function.json
 | | - example.py
 | - src
 | | - private_git_repo
 | | | - package 
 | | | |  __init__.py
 | | | |  function.py

我通过删除 requirements.txt 中的可编辑选项 (-e) 解决了这个问题:

您必须将项目的路径附加到PYTHONPATH并确保使用绝对导入

对于 UNIX(Linux、OSX、...)

export PYTHONPATH="${PYTHONPATH}:/path/to/your/project/"

对于 Windows

set PYTHONPATH=%PYTHONPATH%;C:\path\to\your\project\

绝对进口

假设我们有以下项目结构,

└── myproject
    ├── mypackage
    │   ├── a.py
    └── anotherpackage
        ├── b.py
        ├── c.py
        └── mysubpackage
            └── d.py

只需确保从项目的根目录开始引用每个导入。 例如,

# in module a.py
import anotherpackage.mysubpackage.d

# in module b
import anotherpackage.c
import mypackage.a

有关更多信息,请参阅文章How to fix ModuleNotFoundError 和 ImportError

请参阅此SO线程。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM