我尝试了this question中的答案,但无济于事,所以我认为值得单独提出一个问题。目录布局如下:
aale/
2/
2.py
__init__.py
3/
3.py
__init__.py
__init__.py
很遗憾,名称无法更改(这是为硬件问题提供给我们的布局)。我正在尝试从2
导入3
,但似乎不起作用。我尝试将importlib
用作:
two = importlib.import_module('2.2')
以及
two = importlib.import_module('2')
也不起作用(产生了ModuleNotFoundError: No module named '2'
错误)。任何帮助/其他方法将不胜感激。我正在使用Python 3.6。
答案 0 :(得分:1)
假设您的脚本位于aale
目录中,则需要执行以下导入操作:
two = importlib.import_module('aale.2.2')
答案 1 :(得分:0)
您可以使用__import__
,即:
two = __import__("2.2") # or __import__("aale.2.2")
three = __import__("3.3") # or __import__("aale.3.3")
等同于:
import 2.2 as two
import 3.3 as three
这是不可能的。
注释:
PEP 8 styling guide
:
软件包和模块名称应具有全小写的简短名称。可以在模块名称中使用下划线 如果改善 可读性。
参考:
答案 2 :(得分:0)
您可以使用pathlib
这是基本的:
from pathlib import Path
BASE_LOCATION = Path(__file__).parent
(您可以添加.parent
进入上方的文件夹,依此类推。)
修改
如果这对您没有帮助,则可以尝试import weirdimport
。
您可以了解有关此here的更多信息。
希望这会有所帮助!