1. 导入整个包
import my_package # 使用包中的模块 my_package.module1.some_function()
详细指南:创建、导入和使用自己的Python包
在Python开发中,自定义包可以帮助你:
一个标准的Python包目录结构:
my_package/ # 包目录 │ ├── __init__.py # 包初始化文件(可为空) │ ├── module1.py # 模块1 │ ├── module2.py # 模块2 │ └── subpackage/ # 子包 ├── __init__.py └── submodule.py
关键点:
__init__.py
文件(Python 3.3+可以是空文件)import my_package # 使用包中的模块 my_package.module1.some_function()
from my_package import module1 # 直接使用模块 module1.some_function()
from my_package.module1 import some_function # 直接使用函数 some_function()
from my_package.subpackage import submodule # 使用子模块 submodule.some_function()
math_utils/ ├── __init__.py ├── basic_operations.py └── advanced/ ├── __init__.py └── statistics.py
# basic_operations.py def add(a, b): return a + b def multiply(a, b): return a * b # statistics.py (在advanced目录中) def mean(numbers): return sum(numbers) / len(numbers)
# 主程序 main.py from math_utils import basic_operations from math_utils.advanced import statistics result = basic_operations.add(5, 3) print(f"5 + 3 = {result}") # 输出: 5 + 3 = 8 avg = statistics.mean([2, 4, 6, 8]) print(f"平均值: {avg}") # 输出: 平均值: 5.0
原因:Python找不到你的包
解决方案:
原因:在脚本中错误使用了相对导入
解决方案:
from my_package import module
原因:模块A导入模块B,模块B又导入模块A
解决方案:
在包内部,优先使用绝对导入:
from my_package.module import function
使用__init__.py控制包的公共接口:
# __init__.py from .module1 import important_function from .subpackage import useful_class
对于共享项目,创建setup.py:
from setuptools import setup, find_packages setup( name='my_package', version='0.1', packages=find_packages(), )
不要使用:
from module import * # 不推荐
这会导致命名空间污染和可读性问题
本文由DuanmuLeiMei于2025-08-09发表在吾爱品聚,如有疑问,请联系我们。
本文链接:https://521pj.cn/20257724.html
发表评论