在子目录中有一个模块,当我尝试导入它时,我得到一个NameError: name
foois not defined
。当我将类代码直接放入__main__.py
文件时,它工作得很好__init__.py
文件为空
我尝试了以下所有错误:
MyProject/
├── __init__.py
├── __main__.py
├── foo/
│ ├── bar.py
│ ├── __init__.py
条形图
class Bar:
def __init__(self):
print( 'am here' )
pass
\uu main\uuuuuuuuuuuuy.py
from MyProject import foo
#from MyProject import bar # errors with cannot import bar from MyProject
#from foo import bar # errors with No module named foo
if __name__ == '__main__':
w = Bar()
有没有更好的方法来组织这个
Bar
类在文件bar.py
中,因此我认为您需要这样做或者
如果您不知道将运行哪个目录文件,那么使用
.
来显示包的位置或者
或者
.
在包名之前表示包与当前文件锁定在同一目录中您没有共享您的
foo/__init__.py
,但是您可以通过向其中添加类似的内容来解决此问题:这会将
Bar
添加到foo
的命名空间中,并使Python在导入foo
时找到Bar
不过,您最好看看几个编写软件包的标准示例。首先,您可能不应该将项目命名为
MyProject
,因为该名称表示它是一个类(带有TitleCase)。将其命名为“project”会进一步混淆这个问题,因为似乎您正在编写一个包,所以my_package
听起来是对的相关问题 更多 >
编程相关推荐