Python 模块导入,但不';我没有任何属性
我正在尝试导入一个Python模块(fiasco)。我从GitHub克隆了它,一切看起来都很好。导入它可以工作,但是当我尝试键入时,例如Python 模块导入,但不';我没有任何属性,python,Python,我正在尝试导入一个Python模块(fiasco)。我从GitHub克隆了它,一切看起来都很好。导入它可以工作,但是当我尝试键入时,例如iron=fiasco.Element('iron',[1e4,1e6,1e8]*u.K),我得到错误模块'fiasco'没有属性'Element'。我正在使用Spyder的iPython控制台。如果我从终端启动iPython,这也会失败,但是如果我从终端启动python3,这会起作用 我在两台不同的计算机上完成了这项工作——在一台计算机上,它一开始可以工作,但
iron=fiasco.Element('iron',[1e4,1e6,1e8]*u.K)
,我得到错误模块'fiasco'没有属性'Element'
。我正在使用Spyder的iPython控制台。如果我从终端启动iPython,这也会失败,但是如果我从终端启动python3,这会起作用
我在两台不同的计算机上完成了这项工作——在一台计算机上,它一开始可以工作,但在我重新启动内核后,开始给我相同的错误。另一方面,它根本不起作用
如果有用的话:导入后,我尝试键入fiasco
。当我在它最初工作的计算机上执行此操作时,输出是
。现在,在电脑上,它从来没有工作过,它只是说
。也许这和路径有关
添加:
sys.path
指向/Users/shirman
,以及/Users/shirman/anaconda3
中的几个路径。fiasco文件夹位于/Users/shirman
中。由于sys.path
设置,您无意中创建了一个名称空间包。命名空间包是在Python搜索路径中没有\uuuu init\uuuuuuuuuuuuupy
的目录,允许从不同路径加载子模块或-包(例如path1/foo/a.py
和path2/foo/b.py
可以作为foo.a
和foo.b
导入)
问题是,importfiasco
首先找到/Users/shirman/fiasco
,并将其作为名称空间包导入。如果设置sys.path,使/Users/shirman/fiasco
位于/Users/shirman
之前,则导入程序首先查找实际的包/Users/shirman/fiasco/fiasco
命名空间包是Python 3.3的一项功能,因此要么另一台机器有不同的
sys.path
设置,要么是非常旧的Python 3安装,要么是您使用的是Python 2。使用第三方模块的典型方式是使用包管理器(如pip或conda)安装,而不是从GitHub克隆源代码。是的,您的sys.path
将指向另一个目录,可能指向/Users/shirman
。您是否可能创建了另一个名为fiasco.py
的源文件?那里已经有一个fiasco.py
文件,不要认为我创建了任何其他文件。非常感谢!我在$PYTHONPATH
中添加了/Users/shirman/fiasco
,看起来现在可以正常工作了。