Python断字模块“;没有名为“foo bar”的模块;

Python断字模块“;没有名为“foo bar”的模块;,python,Python,我正在尝试导入一个连字符的模块,我知道Python不应该在模块名称中使用破折号,但这仍然可以工作。我在foo bar中有一个\uuuuu init\uuuuuuuuuuupy.py文件,所有用户都有读取权限 import sys print(sys.path) ['/home/mikob/workspace/foo-bar', ... ] __import__('foo-bar') ImportError: No module named foo-bar 您的sys.path应该是/hom

我正在尝试导入一个连字符的模块,我知道Python不应该在模块名称中使用破折号,但这仍然可以工作。我在
foo bar
中有一个
\uuuuu init\uuuuuuuuuuupy.py
文件,所有用户都有读取权限

import sys
print(sys.path)

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

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

您的
sys.path
应该是
/home/../workspace/

您可以导入名为
foo bar
的模块,但您将无法对其执行任何操作。试着跑步

foo-bar.some_method()
您将得到一个错误,因为Python会认为您试图从名为
foo
的变量中减去从
bar.some_method()
返回的值。因为(我们可以假设)这两个都不存在,所以您将得到一个
NameError:name'foo'未定义


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

sys.path
应该是
/home//workspace/