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

时间:2018-08-31 04:09:39

标签: python python-import

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

这是我的目录结构:

top_level/
    scripts/
        __init__.py
        python_script.py
        some_nodejs_files.js
    tests/
        __init__.py
        test_python_script.py

我可以将所有单元测试代码放在scripts目录的内部,但是我想将测试代码放在与scripts相同级别的测试目录中。如何从python_scripts.py导入test_python_script.py

我从tests/test_python_script.py开始尝试做from ..scripts import python_script,但得到ValueError: attempted relative import beyond top-level package

编辑:在阅读了注释中的某些链接并尝试了一些添加的内容之后

import sys
sys.path.append("..")
from scripts import python_script

这似乎可以解决问题。

我学到了什么

只要有 init .py,该文件夹就是模块的名称。

1 个答案:

答案 0 :(得分:0)

您有两种选择:

# 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

然后您的导入将起作用。