【发布时间】:2020-10-19 04:13:55
【问题描述】:
我有一个这样组织的 python3 项目:
project
src
__init.py__
file1.py (contains Class1)
file2.py (contains Class2)
test
test1.py (contains TestClass1)
test2.py (contains TestClass2)
我希望能够将类从file1.py 导入file2.py,并从file1.py 或file2.py 导入test1.py 和test2.py。在不设置 sys.path 的情况下完成此任务的最直接方法是什么?
我正在使用 python 3.7。
代码被称为:
cd project/src/ && python3 file2.py
作为:
cd project/ && python3 -m unittest discover
这是一个开源项目,因此欢迎任何想要的人访问我们的 GitHub 存储库的 URL,但我认为它与问题无关。
这应该不难,但它让我很适应。我已经阅读了Python3 import chapter 并搜索了规范的 Python 项目组织,但无济于事。
【问题讨论】:
-
您是否有不想使用
sys.path的特殊原因?可以在运行测试之前设置PYTHONPATH环境变量吗? -
这是一个合理的问题。对我来说, sys.path 似乎是一个 hack。我很难相信在一个简单的项目中没有更直接的方法来完成任务。其他语言,无论是比 Python 旧的还是新的,在这方面都没有困难。
-
这个项目结构看起来很奇怪。像这样的设置意味着包本身被称为
src——通常,src是一个包含包的普通目录。为什么直接执行src/file2.py时会有src/__init__.py?一个包意味着file2.py作为包的一部分被执行,例如python3 -m package.src.file2。哪些部分是包,哪些只是目录? -
您的链接很有帮助,@MisterMiyagi - 谢谢! “-m”标志确实是秘诀。我现在有一些工作。我会在回答我自己的问题时记录我得到的信息。
标签: python python-3.x python-import