【问题标题】:Import errors in python project (pipenv, pytest) [duplicate]python项目中的导入错误(pipenv,pytest)[重复]
【发布时间】:2020-09-12 22:15:20
【问题描述】:

我有以下项目结构

- src
  - main.py
  - foo
    - ...
- test
  - test_foo
    - ...
- Pipfile
- setup.cfg

如果我运行pipenv run pytest test 会出现导入错误,因为 test 文件夹位于 src 文件夹之外,因此我无法正确导入文件。

有没有办法将 src 文件夹标记为我的“源”文件夹?

【问题讨论】:

    标签: python pytest pipenv


    【解决方案1】:

    我找到了解决办法,但不知道有没有更好的办法。

    我添加了一个setup.py 文件,我在其中定义了我的 src 文件夹应该是我的“源”文件夹。

    from setuptools import find_packages, setup
    
    setup(
        name="data_generation",
        package_dir={'': 'src'},
        packages=find_packages(where='src'),
    )
    

    安装我运行的所有东西pipenv install -e . --dev。这只是第一次需要,之后Pipfile 被更新,我们可以运行pipenv install --dev

    现在我们可以运行pipenv runp pytest test 并且不再出现任何导入错误。

    【讨论】:

    • 这显然是使用 src 布局时的唯一解决方案(您是针对已安装的代码而不是针对您的源代码存储库进行测试)。
    • 谢谢@hoefling。我是 python 新手,有没有比 src-layout 更好的布局,还是可以使用 src-layout?
    • 这是一个选择问题。我一直更喜欢src 布局,因为它使测试已安装的包变得容易,但如果您不打算向全世界发布库或应用程序,它也可能是矫枉过正。
    猜你喜欢
    • 2021-12-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多