"site" 不是包
"site" is not a package
我有这个目录结构:
my_project/
site/
__init__.py
app.py
main.py
main.py 包含这个:
import site.app
print('Success')
得到这个错误:
Traceback (most recent call last):
File "main.py", line 1, in <module>
import site.app
ImportError: No module named 'site.app'; 'site' is not a package
将 "site" 重命名为任何其他名称,这可以正常工作。示例:
$ mv site/ foo/
$ echo -e "import foo.app\nprint('Success')" > main.py
$ python main.py
Success
$
"site"是一个特殊的包名吗?为什么?我该如何解决?
site
是一个 standard library module。绕过它的方法是不要给你的包命名,就像你不会将它命名为 math
或 sys
或 itertools
一样。如果你想让my_project
成为一个包,让它成为一个包,通过给它一个__init__.py
来让它成为一个包。您不想创建名为 site
.
的顶级包
我有这个目录结构:
my_project/
site/
__init__.py
app.py
main.py
main.py 包含这个:
import site.app
print('Success')
得到这个错误:
Traceback (most recent call last):
File "main.py", line 1, in <module>
import site.app
ImportError: No module named 'site.app'; 'site' is not a package
将 "site" 重命名为任何其他名称,这可以正常工作。示例:
$ mv site/ foo/
$ echo -e "import foo.app\nprint('Success')" > main.py
$ python main.py
Success
$
"site"是一个特殊的包名吗?为什么?我该如何解决?
site
是一个 standard library module。绕过它的方法是不要给你的包命名,就像你不会将它命名为 math
或 sys
或 itertools
一样。如果你想让my_project
成为一个包,让它成为一个包,通过给它一个__init__.py
来让它成为一个包。您不想创建名为 site
.