【发布时间】:2019-03-14 10:05:40
【问题描述】:
我正在尝试在添加到代码库的同时改进项目结构。我找到了一个示例结构here,它看起来像这样:
README.rst
LICENSE
setup.py
requirements.txt
sample/__init__.py
sample/core.py
sample/helpers.py
docs/conf.py
docs/index.rst
tests/test_basic.py
tests/test_advanced.py
我特别注意到requirements.txt 和setup.py 的级别高于tests/ 和sample/
如果我添加sample/classes.py,您只需在sample/core.py 中写入from classes import MyClass 即可获得它。然而,它不能那么容易地导入tests/test_basic.py,在导入时看起来不像 python '看起来在拐角处'。
在我的例子中,还有一个 MANIFEST.in 与 requirements.txt 和一些不是真正的 python 文件在同一级别上,但只是为运行它的平台设置了一些东西。
如果classes.py 与requirements.txt 处于同一级别,我认为tests/ 和sample/ 及其子目录中的所有内容都可以轻松导入它,但它可能需要__init__.py感觉不错。
如果tests/ 和sample/ 都需要使用它,那么它应该去哪里呢?
【问题讨论】:
-
测试的重点是他们应该可以访问
sample中的代码;他们只需要以sample.classes的名义导入classes。 -
我认为那里还没有框架,最近正在阅读那些可能是未来的计划。现在我运行这样的测试:
python -m unittest discover path/to/tests -
@jwodder 我刚试过,但它说
ImportError: No module named 'sample'所以我试着在from .sample.classes import classes之前加一个点,它说SystemError: Parent module '' not loaded, cannot perform relative import
标签: python python-3.x python-module directory-structure pep8