python: 在包中找不到模块

python: cannot find module in the package

我正在创建一个具有以下目录结构的 python 项目:

demos
   demo1.py
kernels
   rbf.py
   ___init__.py

文件 rbf.py 定义了一个名为 RBF 的 class。 kernels 目录中的 __init__.py 文件包含以下行:

from .rbf import *

现在 demo1.py 包含以下导入:

from kernels import RBF

然而,这失败了

ImportError: No module named kernels

所以demos文件夹看不到kernels包目录。我不知道该怎么做才能完成这项工作。

您应该将 kernels 的父目录添加到 PYTHONPATH 环境变量或直接添加到 sys.path 以便 Python 能够找到包 kernels.

demo1.py 中修改 sys.path 的示例,假设 demokernels 具有相同的父目录 -

import os, os.path
import sys
sys.path.append(os.path.abspath(os.path.join(os.path.dirname(__file__),'..')))
from kernels import RBF

以上是做什么的 -

__file__获取脚本的路径

os.path.dirname(__file__) - 获取包含文件的目录路径。

os.path.join() - 创建类似 - /path/to/demos/.. 的路径 - 取决于 OS.

os.path.abspath - 从/path/to/demos/..

获取父目录的绝对路径

如果demo1和内核不在同一个文件夹中,您必须将内核文件的路径添加到path环境变量中。

import sys
sys.path.append("/path/to/kernels")