Python连字模块“没有名为foo-bar的模块”

时间:2015-03-15 20:39:33

标签: python

我试图导入一个带连字符的模块,我知道Python不应该在模块名称中有破折号,但这仍然应该有用。我在__init__.py中有一个foo-bar文件,允许所有用户使用读取权限。

import sys
print(sys.path)

['/home/mikob/workspace/foo-bar', ... ]

__import__('foo-bar')
ImportError: No module named foo-bar

2 个答案:

答案 0 :(得分:1)

您的sys.path应为/home/.../workspace/

答案 1 :(得分:0)

您可以导入名为foo-bar的模块,但您无法对其执行任何操作。尝试运行

foo-bar.some_method()

并且您只会收到错误,因为Python会认为您试图从名为bar.some_method()的变量中减去foo返回的值。由于(人们会假设)这两者都不存在,你将得到一个NameError: name 'foo' is not defined

有一个简单的修复方法 - 遵循Python的命名约定,并且只在标识符中使用字母,数字和下划线。