我正在尝试导入一个Python模块(fiasco)。我从GitHub克隆了它,一切看起来都很好。导入它是可行的,但是当我尝试键入时,例如iron = fiasco.Element('iron', [1e4, 1e6, 1e8]*u.K)
,我得到了错误module 'fiasco' has no attribute 'Element'
。我正在使用Spyder的iPython控制台。如果我从终端启动iPython,这也会失败,但是如果我从终端启动python3,这会起作用
我在两台不同的计算机上完成了这项工作——在一台计算机上,它一开始可以工作,但在我重新启动内核后,开始给我相同的错误。另一方面,它根本不起作用
如果有帮助的话:导入后,我尝试键入fiasco
。当我在它最初工作的计算机上这样做时,输出是<module 'fiasco' from '/Users/shirman/fiasco/fiasco/__init__.py'>
。现在,在它从未工作过的计算机上,它只是说<module 'fiasco' (namespace)>
。也许这和路径有关
添加:sys.path
指向/Users/shirman
,并且在/Users/shirman/anaconda3
内有几个路径。fiasco文件夹位于/Users/shirman
由于
sys.path
设置,您无意中创建了命名空间包。命名空间包是Python搜索路径中没有__init__.py
的目录,允许从不同路径加载子模块或-包(例如path1/foo/a.py
和path2/foo/b.py
可以作为foo.a
和foo.b
导入)问题是
import fiasco
首先找到/Users/shirman/fiasco
,并将其作为命名空间包导入。如果您将sys.path设置为/Users/shirman/fiasco
在/Users/shirman
之前,导入器将首先找到实际的包/Users/shirman/fiasco/fiasco
名称空间包是Python3.3的一个特性,因此要么另一台机器有不同的
sys.path
设置,要么是非常旧的Python3安装,要么是您使用的是Python2相关问题 更多 >
编程相关推荐