这是一个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文件夹就是模块的名称。
你有几个选择:
# 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
然后你的导入将工作。