我试图导入一个带连字符的模块,我知道Python不应该在模块名称中有破折号,但这仍然应该有用。我在__init__.py
中有一个foo-bar
文件,允许所有用户使用读取权限。
import sys
print(sys.path)
['/home/mikob/workspace/foo-bar', ... ]
__import__('foo-bar')
ImportError: No module named foo-bar
答案 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的命名约定,并且只在标识符中使用字母,数字和下划线。