Импорт между проектами Python 3 не работает - PullRequest
0 голосов
/ 27 декабря 2018

У меня есть структура каталогов, подобная следующей:

project/
    README.md
    project/
        foobar/
            foo.py
        tests/
            test_foo.py

test_foo это просто from foobar import foo, и когда я запускаю py.test или просто python3 tests/test_foo.py из подкаталога project, я получаюNo module named foobar ошибка.Я попробовал другие ответы здесь, такие как добавление .. к sys.path, с использованием относительного импорта, ничего не работает, за исключением случаев, когда python3 test_foo.py внутри tests с sys.path.append('..').

Ответы [ 2 ]

0 голосов
/ 27 декабря 2018

foo.py

def test():
    print("test")

test_foo.py

import os
import sys

runPath = os.path.dirname(os.path.realpath(__file__))
sys.path.append(os.path.join(runPath, ".."))

from foobar import foo

foo.test()

Вывод

test
0 голосов
/ 27 декабря 2018

Сначала сделайте пакет из вашего проекта и установите его.

Если установлено, вы можете просто использовать абсолютные ссылки, начиная с вашего имени пакета:

from project import foobar
from project.foobar import foo

Другой способ - использовать intra-пакеты (без изменения sys.path):

test_foo.py

from .. import foobar
...