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()

 

二、

python报错ModelNotFoundError

很可能是因为工作目录并不在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()

 

posted @ 2020-03-23 00:26  秦时明月0515  阅读(5706)  评论(0编辑  收藏  举报