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
的示例,假设 demo
和 kernels
具有相同的父目录 -
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")
我正在创建一个具有以下目录结构的 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
的示例,假设 demo
和 kernels
具有相同的父目录 -
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")