我知道这已被问过几十次,但我无法看到世界上我做错了什么。我试图从另一个目录导入python 2.7中的模块。我非常感谢一些意见,以帮助我理解为什么这种方法不起作用。我的raspbian系统上有以下目录结构:
/home/pi/
...projects/__init__.py
...projects/humid_temp.py
...python_utilities/__init.py__
...python_utilities/tools.py
我正在调用humid_temp.py,我需要在tools.py中导入一个函数。这就是它们的内容:
humid_temp.py:
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:没有名为python_utilities.tools的模块。
我错过了什么?
答案 0 :(得分: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? - 了解更多详情。
答案 1 :(得分:2)
在humid_temp.py中,只需写下:
tools.function()
无需将子文件夹附加到sys.path。
然后当你想使用工具中的函数时,只需
shay__