我的项目具有以下目录结构:
Project
|
+-- __init__.py
|
+-- run.py
|
+-- dir1
| |
| +-- __init__.py
| +-- module1.py
|
+-- dir2
| |
| +-- __init__.py
| +-- module2.py
我想将一些在module1中定义的功能导入到module2中。最终来自module2的功能被导入到主脚本run.py
中。
我尝试将以下行放在module2.py
中:
from ..module1 import something
然后当我尝试做时:
python3 run.py
或
python3 -m run.py
我收到此错误:
ValueError: attempted relative import beyond top-level package
所有__init__.py
文件均为空
如何解决这个问题?
答案 0 :(得分:0)
您应该尝试这个
from dir1.module1 import your_function
from dir2.module2 import your_second_function
这应该可以完成工作!
答案 1 :(得分:0)
您需要将PYTHONPATH
设置为根项目文件夹(在您的示例中为Project
)。
这样可以确保无论您在哪里启动python脚本,无论在哪里放置模块,都可以将其作为PYTHONPATH
文件夹中的相对路径进行访问。
另一种方法是将项目根目录添加到sys.path
中,例如sys.path.insert(0, 'path_to_root')
,但这需要在导入所有模块之前在所有脚本中执行此操作。
设置后,您就可以使用任何脚本执行操作(即使它们不在Project
的子文件夹中)
from dir1.module1 import *