Bugs-in-python

本文最后更新于:2023年6月19日 晚上

记录在编写 python 程序中遇到的 bug 们。

跨目录调用模块

1
2
3
4
5
6
7
8
9
10
11
project
├── package1
│ ├── __init__.py
│ ├── module_11.py
│ └── module_12.py
├── package2
│ ├── __init_.py
│ ├── module_21.py
│ └── module_22.py
├── main.py
└── tool.py

对于这样一个目录结构的项目,我们需要知道:
Python 解析器对模块位置的搜索顺序

  1. 当前目录
  2. PYTHONPATH 的每个目录。
  3. 查看 Python 安装时的默认包路径。例如:/usr/lib64/python2.6/site-packages

    可以通过查询sys.path查看模块搜索路径。

在子包(package)中引入根目录

  • 将项目的根目录加到 PYTHONPATH 变量中

  • sys.path.append(“..”)

同级模块(module)引用

module_11.py文件导入 module_12.py 模块

1
import module_12

导入下级模块

main.py文件导入module_12.py模块

1
2
3
from package1 import module_12
# 或者
import package1.module_12

  导入上级模块

module_11.py导入上级目录的tool.py模块

1
2
3
import sys
sys.path.append("..")
import tool

相当于通过sys.path.append("..")进入上级目录,然后类似导入同级目录模块的方式导入。

导入跨包下级模块

module_11.py导入package2包的module_21.py模块

1
2
3
import sys
sys.path.append("..")
from package2 import module_21

相当于通过sys.path.append("..")进入上级目录,然后类似导入下级目录模块的方式导入。

参考:https://www.huweihuang.com/python-notes/package/package-module.html


本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!