如何在程序包导入时调试“无法导入”错误

时间:2013-11-24 17:13:20

标签: python fuse

我是python的新手,并试图通过this教程了解python fuse。我用pip安装了pythonfuse。我通过下载dmg并在os x上安装来安装os x fuse。当我从教程中运行这行代码from fuse import FUSE, FuseOSError, Operations时,我看到了:

akh2103$ python myfuse.py 
Traceback (most recent call last):
  File "myfuse.py", line 10, in <module>
    from fuse import FUSE, FuseOSError, Operations
ImportError: cannot import name FUSE
好像找不到保险丝包,找不到python保险丝包或找不到包内的FUSE,FuseOSError和Operations方法。哪一个?当我输入import fuse Python去哪里寻找保险丝包?我习惯在java中对路径进行分类:是否有python等价?我是python的新手。我该如何开始调试呢。

3 个答案:

答案 0 :(得分:1)

它位于/ Library / Python /&lt; version&gt; / site-packages。

您可能有多个版本可能是问题的原因。

找出pip安装保险丝的位置。

您可以使用PYTHONPATH环境变量添加其他文件夹。

答案 1 :(得分:0)

找到了保险丝模块(否则你会看到“没有名为保险丝的模块”)。您得到的错误意味着模块保险丝中找不到“FUSE”符号。

我的猜测是FUSE有几个python绑定,你可能正在寻找一个与你正在加载的模块不同的模块的教程。另一种选择是不同版本之间库中的一些重大变化。

如果要查看模块导出的所有符号,请使用dir()

import fuse
dir(fuse)

答案 2 :(得分:0)

说这是你的目录结构:

myapp/
    firstpackage/
        __init__.py
        firstmodule.py
    secondpackage/
        __init__.py
        secondmodule.py
    __init__.py
    myfirstapp.py

firstmodule.py

def first_function(data):
    return data

def second_function(data):
    return data

现在让我们说我们的工作是:mod:`myfirstapp`。

如果我们想访问:func:`first_function`,我们将导入如下:

from myapp.firstpackage.firstmodule import first_function
print first_function('foo')

:mod:`__ init__'在'firstpackage'目录中允许:mod:`firstmodule`从它的目录外部访问。在目录中包含:file:`__init __。py`使该目录成为Python包。

但是,最好导入整个模块,如:

import myapp.firstpackage.firstmodule as firstmodule
print firstmodule.first_function('foo')
print firstmodule.second_function('bar')

另一种方法是:

from myapp.firstpackage import firstmodule
print firstmodule.second_function('foo')

这样一切都可以在您的模块中访问,并且更易于阅读。

话虽如此,你接收的:exc:`ImportError`是因为'mod:`fuse`中不存在'FUSE',无论是数据,类还是函数。

打开fuse.py并搜索“FUSE”并查看是否有任何问题。寻找:

def FUSE(): ...
class FUSE(..): ...
FUSE = ...

我知道整个软件包/模块课程不在你的问题主题中,但是你说你是新的,所以我想我会详细说明:P