关于python import的路径问题
Posted 詩和遠方
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于python import的路径问题相关的知识,希望对你有一定的参考价值。
模块(python module)就是一个python文件,包(package)就是一个带__init__.py
文件的文件夹,可以理解为模块的集合。
假设项目项目如下:
Project
│ app_1.py
│ app_2.py
│
├─common
│ module_1.py
│ module_2.py
│ __init__.py
│
└─test
test_1.py
test_2.py
在module_2.py中引用module_1.py
from module_1 import class_a
然后直接通过python.exe运行module_1.py,一切正常。
但在app_1.py中引用module_1.py后执行app_1.py却会提示找不到模块module_1。
后改为
from common.module_1 import xxx
app_1.py运行正常,但运行module_1.py提到找不到模块common。
还真是按下葫芦浮起瓢呢,让人感觉相当困惑,更加让人震惊的是以上两种情况在vscode下会再现,但通过pycharm运行则一切正常。
这是因为pycharm默认将要运行的py文件所在目录以及项目根目录加入到sys.path中了。
后查询了相关资料后,发现相对引用容易出错,所以为自己定下一个规则,尽量用从Package根目录开始的绝对引用,就当前例子而言就是从common开始。
若要执行package里的module进行测试,可换种方式进行运行:
- 方式一: 新建一个py文件然后对其进行引用后执行,若py文件不在项目目录下,可在import前加上:
import sys
sys.path.append('your_project_path')
from common.module_1 import xxx
若担心模块名称同名,希望保证引用的是正确的模块,可将append操作改为insert: sys.path.insert(0, 'your_project_path')
- 方式二:在Project目录下用执行模块的方式运行:
python -m common.module_1
注意不要加.py后缀名
以上是关于关于python import的路径问题的主要内容,如果未能解决你的问题,请参考以下文章
关于Python3的import问题(pycharm可以运行,命令行import错误)
ImportError: cannot import name ‘xxx‘ from ‘xxx‘关于python导包的问题