python引入自己的包
两种办法:
一、在文件夹下添加一个名为 __init__.py 的文件,文件内什么都不需要写
我的目录结构是这样的:
pythonproject\main\data\test.py pythonproject\main\common\mysqlutil.py pythonproject\main\common\__init__.py
这样我在 test.py 中引入mysqlutil
# test.py import os import sys # 我自己的在项目里的模块 from main.common import mysqlutil def test1(): mysqlutil.print() def main(): test1() # 判断是否是程序主入口而已,如果是程序主入口,则代码块执行,否则代码块不执行 # 主要用于别人调用此代码时,不要进入该代码的入口 if __name__ == "__main__": main()
或者
# test.py import os import sys # 我自己的在项目里的模块 import main.common.mysqlutil def test1(): main.common.mysqlutil.print() def mymain(): test1() # 判断是否是程序主入口而已,如果是程序主入口,则代码块执行,否则代码块不执行 # 主要用于别人调用此代码时,不要进入该代码的入口 if __name__ == "__main__": mymain() # 名字不能和包的名字相同
或者
# test.py import os import sys # 我自己的在项目里的模块 from main.common.mysqlutil import * def test1(): print() # 直接可以调用mysqlutil的方法, 这里也可以是类 def main(): test1() # 判断是否是程序主入口而已,如果是程序主入口,则代码块执行,否则代码块不执行 # 主要用于别人调用此代码时,不要进入该代码的入口 if __name__ == "__main__": main()
二、
很可能是因为工作目录并不在sys.path中,系统无法默认的找到您的脚本文件,通过以下命令可以解决该问题:
>>> import sys
>>> sys.path.append('d:\python_test') #括号内为工作文件夹路径
>>> import mymodel #引用的模块
查看配置的路径: 在python命令行中或者.py文件里
import sys
sys.path
通过如下命令添加路径:
sys.path.append("C:\Users\DELL\Desktop\test")
这样这个路径就被添加进来。
在python的项目中,py文件里,我们可以用如下方法
我的文件目录是这样的
pythonproject\main\data\test.py
pythonproject\main\common\mysqlutil.py
# test.py
import os import sys projectname = 'pythonproject' # 获取当前文件的目录 curPath = os.path.abspath(os.path.dirname(__file__)) # print(curPath) # 从后往前匹配项目 # path = curPath[0: curPath.rfind(projectname)] rootPath = curPath[0: curPath.rindex(projectname)] + projectname print(rootPath) #括号内为工作文件夹路径 #引用的模块 # sys.path.append(r'\path\to\file\pythonproject\main\common') # import mysqlutil # sys.path.append(r'\path\to\file\pythonproject') # import main.common.mysqlutil # from main.common import mysqlutil #sys.path.append(rootPath) sys.path.append(rootPath) # 我自己的在项目里的模块 from main.common import mysqlutil def test1(): print() def main(): test1() # 判断是否是程序主入口而已,如果是程序主入口,则代码块执行,否则代码块不执行 # 主要用于别人调用此代码时,不要进入该代码的入口 if __name__ == "__main__": main()
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构