关于pythonimport的路径问题
模块(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
然后直接通过运⾏module_1.py,⼀切正常。
但在app_1.py中引⽤module_1.py后执⾏app_1.py却会提⽰不到模块module_1。
后改为
dule_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')
python默认安装路径dule_1 import xxx
若担⼼模块名称同名,希望保证引⽤的是正确的模块,可将append操作改为insert: sys.path.insert(0, 'your_project_path')⽅式⼆:在Project⽬录下⽤执⾏模块的⽅式运⾏:
python -dule_1
注意不要加.py后缀名
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论