python:在包中找不到模块

时间:2015-08-26 12:12:01

标签: python python-import

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

demos
   demo1.py
kernels
   rbf.py
   ___init__.py

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

from .rbf import *

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

from kernels import RBF

但是,

失败了
ImportError: No module named kernels

因此demos文件夹看不到kernels包目录。我不知道如何做到这一点。

2 个答案:

答案 0 :(得分:7)

您应该将<div id="slides"> <img src="http://michaellaszlo.com/so/slideshow/assets/apple.jpg" alt="apple" /> <img src="http://michaellaszlo.com/so/slideshow/assets/pear.jpg" alt="pear" /> <img src="http://michaellaszlo.com/so/slideshow/assets/orange.jpg" alt="orange" /> <img src="http://michaellaszlo.com/so/slideshow/assets/banana.jpg" alt="banana" /> <img src="http://michaellaszlo.com/so/slideshow/assets/pineapple.jpg" alt="pineapple" /> <img src="http://michaellaszlo.com/so/slideshow/assets/kiwi.jpg" alt="kiwi" /> </div> <button id="startButton" disabled>start</button>的父目录添加到kernels环境变量,或直接添加到PYTHONPATH以便Python找到包sys.path

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

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.path.abspath

获取父目录的绝对路径

答案 1 :(得分:0)

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

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