我有以下目录结构:
- src
- __init__.py
- scripts
- __init__.py
- preprocessing.py
- project1
- main.py
- project2
- main.py
我试图从scripts
文件中访问main.py
文件夹中的脚本。
我已尝试添加__init__.py
(空白)文件,并使用import scripts
,from src import scripts
和from .. import scripts
进行导入。这些似乎都不起作用。
我得到:ValueError: Attempted relative import in non-package
,或者找不到任何模块。
提前致谢!
P.S。我假设目录结构将很快变得更深(例如scripts
和project1
/ project2
内的多个子目录。因此,如果这些也是解决这个问题的简单方法,那将非常感激。
答案 0 :(得分:0)
处理它的一种方法(尽管不是最干净的)是手动将根目录添加到sys.path变量中,以便python可以在其中查找模块,例如,在main.py中可以添加这些线在顶部:
#/src/project1/main.py
import os
import sys
sys.path.append(os.getcwd() + '\\..\\') # this is the src directory
这将允许python在运行脚本的目录上方的目录中查找模块,这将起作用:
import scripts.preprocessing
请记住,python只会在脚本运行时在同一目录或下面查找模块。如果你启动/src/project2/main.py,python对/ src / project1 /或/ src / scripts /
一无所知