【发布时间】:2020-09-12 22:15:20
【问题描述】:
我有以下项目结构
- src
- main.py
- foo
- ...
- test
- test_foo
- ...
- Pipfile
- setup.cfg
如果我运行pipenv run pytest test 会出现导入错误,因为 test 文件夹位于 src 文件夹之外,因此我无法正确导入文件。
有没有办法将 src 文件夹标记为我的“源”文件夹?
【问题讨论】:
我有以下项目结构
- src
- main.py
- foo
- ...
- test
- test_foo
- ...
- Pipfile
- setup.cfg
如果我运行pipenv run pytest test 会出现导入错误,因为 test 文件夹位于 src 文件夹之外,因此我无法正确导入文件。
有没有办法将 src 文件夹标记为我的“源”文件夹?
【问题讨论】:
我找到了解决办法,但不知道有没有更好的办法。
我添加了一个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 布局时的唯一解决方案(您是针对已安装的代码而不是针对您的源代码存储库进行测试)。
src-layout 更好的布局,还是可以使用 src-layout?
src 布局,因为它使测试已安装的包变得容易,但如果您不打算向全世界发布库或应用程序,它也可能是矫枉过正。