Python中如何导入自建包?求教导入自建包的问题

想把好几个单独的 py 文件(里面都是写的类)放入一个文件夹做为一个包导入,文件夹里也建了空的__init__.py 文件,导入也成功了,但是包里面的文件直接有依赖关系,就会报错未定义这个类。 比如 --A 文件夹 init.py 1.py 2.py 3.py main.py

main.py 和 A 文件夹同级 main.py 里面写了 import A 1 2 3 脚本都导进去了吧 但是 2 和 3 有依赖关系(2 会用到 3 的类),就会报错没有定义这个类 这个怎么解决


Python中如何导入自建包?求教导入自建包的问题

5 回复

最好贴代码,你这都没排版很难猜是什么问题,初步看下来你先看看 main 里面是先 import 2 还是 3,先 2 的话会报错


在Python里导入自己写的包,核心就两点:确保你的包在Python的模块搜索路径里,然后正确使用import语句

最常见的情况是你的包和当前脚本在同一个项目目录下。假设你的项目结构是这样的:

my_project/
├── my_package/
│   ├── __init__.py
│   └── module1.py
└── main.py

main.py里,你可以这样导入:

# 导入整个包
import my_package
# 或者从包中导入特定模块
from my_package import module1
# 或者导入模块中的具体对象
from my_package.module1 import my_function

如果包不在同一目录,你需要把包的路径加到sys.path里。比如你的包在/some/other/path/my_package

import sys
sys.path.insert(0, '/some/other/path')
import my_package

关键点

  1. 包必须是一个目录,并且里面要有一个__init__.py文件(可以是空的),Python才会把它当作一个包。
  2. sys.path是一个列表,Python会按顺序在这些路径里查找模块。用insert(0, ...)可以让你自定义的路径优先被搜索。

一句话总结:确保包路径对Python可见,然后用标准的import语法就行。

import 当前文件夹下的包,需要使用
import .A
import .B
只有全局的包才能直接 import

import .1
import .2
import .3
可以试一下,你这提问看的人有点晕

看不懂上边说的啥 但是不是在 2 里边 import 3 吗 记得 python 好像自己会处理循环 import 的问题

回到顶部