Python 3项目间导入无法正常工作

时间:2018-12-27 12:07:46

标签: python python-3.x pytest importerror

我的目录结构如下:

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('..')时。 / p>

2 个答案:

答案 0 :(得分:0)

首先从您的项目中制作一个软件包,然后安装它。

如果已安装,则可以简单地使用以软件包名称开头的绝对链接:

from project import foobar
from project.foobar import foo

另一种方法-使用包内链接(无需对sys.path进行修改):

test_foo.py

from .. import foobar

答案 1 :(得分:0)

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