Python 导入代码以测试同一级别的目录

Python 导入代码以测试同一级别的目录,python,python-import,Python,Python Import,这是一个nodejs和python项目,因此目录结构就是这样 这是我的目录结构: top_level/ scripts/ __init__.py python_script.py some_nodejs_files.js tests/ __init__.py test_python_script.py 我可以将所有单元测试代码放在脚本目录中,但我希望将测试代码放在与脚本相同级别的测试目录中。如何从t

这是一个nodejs和python项目,因此目录结构就是这样

这是我的目录结构:

top_level/
    scripts/
        __init__.py
        python_script.py
        some_nodejs_files.js
    tests/
        __init__.py
        test_python_script.py
我可以将所有单元测试代码放在
脚本
目录中,但我希望将测试代码放在与
脚本
相同级别的测试目录中。如何从
test\u python\u script.py导入
python\u scripts.py

tests/test\u python\u script.py
我尝试了从..scripts import python\u script
执行
From,但我得到了一个
ValueError:尝试了超出顶级包的相对导入

编辑:在阅读了评论中的一些链接并尝试了一些我添加的东西之后

import sys
sys.path.append("..")
from scripts import python_script
这似乎起到了作用

我学到的
无论您在哪里拥有init.py,该文件夹都是模块的名称。

您有两个选项:

# add scripts to the python path
from os.path import abspath, dirname, join
import sys
sys.path.append(join(dirname(abspath(__file__)), 'scripts'))
那么你的导入就可以了

或者利用当前目录已经是路径的一部分这一事实,只需使用符号链接:

# bash
cd tests
ln -s ../scripts/python_script.py

然后你的导入就可以了。

ValueError怎么说?@Terminus更新了Ok的原始后可能副本,可能更彻底。这会进入测试目录的init.py吗?你的答案与上面我的编辑有什么不同吗?我想它也在做同样的事情