我有以下文件夹结构。
project/
sandbox.py
module/
__init__.py
klass.py
__init__.py
具有以下内容:
from klass import Klass
if __name__ == '__main__':
'do stuff'
这很好用。 sandbox.py
看起来像这样:
from module import *
if __name__ == '__main__":
'do similar stuff'
在命令行中,在project
目录中:
$ python module/__init__.py
# things work correctly
$ python sandbox.py
Traceback (most recent call last):
File "sandbox.py", line 1, in <module>
from module import *
File "/Uses/chuck/.../project/module/__init__.py, line 1 in <module>
from klass import Klass
ImportError: No module named 'klass'
我认为这可能与相对导入有关,并尝试将from klass import Klass
更改为from .klass import Klass
,但这也不起作用。
我的目标是,从模块外部的文件中,可以使用from module import *
或from module import Klass
。我需要做什么?
如果重要,则在虚拟环境中的macOS下使用Python 3.5.2。
答案 0 :(得分:1)
使用绝对路径和__main__.py
文件:
from module.klass import Klass
'do stuff'
在__init__.py
:
from .klass import Klass
现在你可以按如下方式执行它:
$ python sandbox.py
do similar stuff
$ python -m module
do somthing