我不确定这是否是一个愚蠢的问题,但我对包装和类似的东西没有经验。以下是包含文件的树结构:
.
├── main.py
└── stringfunc
├── __init__.py
└── toLower.py
main.py:
import sys
import stringfunc
def main():
print(stringfunc.toLower.to_lower(sys.argv[1]))
return 0
if __name__ == "__main__":
main()
toLower.py:
def to_lower(inStr):
return inStr.lower()
并且__init__.py
文件是空的。
当stringfunc
目录有一个__init__.py
文件时,它现在的行为不应该像一个包吗?我知道我可以在__init__.py
中使用from .toLower import to_lower
来获得一种更简单、更不丑陋的方式,但我在一本书中看到,这段代码必须也能工作,但它不能。所以我恐怕不明白它到底是怎么工作的
以下是错误:
AttributeError: module 'stringfunc' has no attribute 'toLower'
显然,Python仍然认为它是一个“模块”,而不是一个“包”
你几乎已经做了你需要做的一切。但是,导入不会自动获取所有路径并公开它们。您需要执行以下操作之一:
stringfunc.toLower
toLower
添加到__init__.py
要展开“添加
toLower
”选项,请执行以下操作:相关问题 更多 >
编程相关推荐