Python与测试文件夹的相对导入
我知道像这样的帖子可能有几千篇,我几乎都读过了,但我仍然无法解决我的问题 我有以下项目结构:Python与测试文件夹的相对导入,python,python-3.x,Python,Python 3.x,我知道像这样的帖子可能有几千篇,我几乎都读过了,但我仍然无法解决我的问题 我有以下项目结构: project │ ├── main.py ├── module1 │ ├── __init__.py │ ├── b.py │ └── c.py │ ├── tests │ └── tests_module1.py 在tests_module1.py中,我想导入函数b.py
project
│
├── main.py
├── module1
│ ├── __init__.py
│ ├── b.py
│ └── c.py
│
├── tests
│ └── tests_module1.py
在tests_module1.py中,我想导入函数b.py和c.py来测试它们的功能。我已经尝试了以下导入:
- 从..模块1.b导入*
- 从模块1.b导入*
- 从。。进口b
- 从模块1.b导入*
我使用的是Python 3.9,而不是。。导入b您必须尝试
from ...module1 import *
查看一下修改python搜索路径: 修改Python的搜索路径 当Python解释器执行语句时,它会沿着搜索路径搜索Python代码和扩展模块。构建解释器时,路径的默认值配置为Python二进制文件。您可以通过导入模块并打印
sys.path
的值来确定路径
本地安装的软件包的预期约定是将它们放在../site packages/目录中
,但您可能希望将Python模块安装到某个任意目录中。。。有几种不同的方法可以添加目录
最方便的方法是将路径配置文件添加到已经在Python路径上的目录中,通常添加到../site packages/
目录中。路径配置文件的扩展名为.pth
,每一行必须包含一个将附加到sys.Path
的路径
最后,sys.path只是一个常规的Python列表,因此任何Python应用程序都可以通过添加或删除条目来修改它
另见
- 请参阅。
如果从
tests
目录中运行python3 tests\u module1.py
,Python不知道包结构
尝试以下b.py
:
# module1/b.py
def hello():
print("Hello world!")
from module1 import b
b.hello()
将其导入测试\u module1.py
:
# module1/b.py
def hello():
print("Hello world!")
from module1 import b
b.hello()
使用-m
(作为模块运行)开关从项目
目录运行它:
这将引发:ImportError:尝试在没有已知父包的情况下进行相对导入。此操作不提供问题的答案。若要评论或要求作者澄清,请在其帖子下方留下评论。-@李戴:你为什么这么说?这可能不是一个正确的答案,但它肯定是一个答案。@JeremyCaney-对我来说,
try
意味着这是一个建议,建议在评论中真正提出。@Lee_Dailey:建议OP“尝试”一些东西是可以的(]此类答案可能值得向下投票,但不值得删除。与仅代码答案相同。两者都不被视为高质量答案,但这就是向下投票选项的目的。VLQ队列适用于不努力回答问题的帖子(即,“谢谢”、“这不起作用”、“我也有这个问题”或只是一个链接)()。虽然此链接可以回答问题,但最好在此处包含答案的基本部分,并提供链接供参考。如果链接页面发生更改,则仅链接的答案可能会无效。-@codingCat理解,感谢您的提示谢谢,从项目目录运行它是正确的提示。现在很明显当我在test目录中启动test_module1.py时,解释器对module1一无所知。