2015-09-02 335 views
1

我知道这已被问了几十次,但我看不到我在做什么错误的世界。我想从一个不同的目录中导入Python 2.7中的模块。我非常感谢一些意见,帮助我理解为什么这种方法不起作用。我有我的raspbian系统上的以下目录结构:树莓派上的Python导入模块

/home/pi/ 
     ...projects/__init__.py 
     ...projects/humid_temp.py 

     ...python_utilities/__init.py__ 
     ...python_utilities/tools.py 

我打电话humid_temp.py,我需要进口tools.py内的功能这是它们的内容是什么样子:

humid_temp。潘岳:

import os 
import sys 
sys.path.append('home/pi/python_utilities') 
print sys.path 
from python_utilities.tools import * 

tools.py:

def tail(file): 
    #function contents 
    return stuff 

打印sys.path输出包含/home/pi/python_utilities

我不搞乱我的__init__.py是我吗? 我也排除了可能的权限问题与路径,因为我把它全777次访问,我仍然打

ImportError: No module named python_utilities.tools.

我错过了什么?

回答

2

当你想导入类似 -

from python_utilities.tools import * 

您需要的python_utilities父目录添加到sys.path,不python_utilities本身。所以,你应该加入类似 -

sys.path.append('/home/pi')  #Assuming the missing of `/` at start was not a copy/paste mistake 

而且,只是一张纸条,from <module> import *是坏的,你应该只考虑进口所需物品,可以检查问题 - Why is "import *" bad? - 了解更多详情。

2

在humid_temp.py,只写:

from python_utilities import tools 

没有必要追加子文件夹sys.path中。

然后,当你要使用的功能的工具,只是

tools.function()