Импортировать код для проверки формы каталога того же уровня - PullRequest
0 голосов
/ 31 августа 2018

Это проект 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 голосов
/ 31 августа 2018

У вас есть несколько вариантов:

# 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

Тогда ваш импорт будет работать.

...