问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

python怎么导入自己写的包

发布网友 发布时间:2022-04-26 02:17

我来回答

3个回答

热心网友 时间:2022-04-18 05:39

包(packages)其实也是模块,其类型Type也是mole。通常引用自定义模块时有两种方法:
1)将两个文件放在同一目录下。
2)在sys.path下添加要引用的py文件的路径。然后import。
这样的做法,对于少数文件是可行的,但如果程序数目很多,层级很复杂时就比较麻烦了。此时用package就能将多个py文件组织起来,类似于第三方包一样的引用。要方便很多。

package的层次结构与程序所在目录的层次结构相同,且必须包含一个__init__.py的文件。__init__.py可以为空,只要它存在就表明此目录被作为一个package处理。

package1/
__init__.py
subPack1/
__init__.py
mole_11.py
mole_12.py
mole_13.py
subPack2/
__init__.py
mole_21.py
mole_22.py
……

__init__.py可以为空,只要它存在,就表明此目录应被作为一个package处理。当然,__init__.py中也可以设置相应的内容。
好了,现在我们在mole_11.py中定义一个函数:

def funA():
print "funcA in mole_11"
return

一.引用模块
在顶层目录(也就是package1所在的目录,当然也参考上面的介绍,将package1放在解释器能够搜索到的地方)运行python:

>>>from package1.subPack1.mole_11 import funcA
>>>funcA()
funcA in mole_11

这样,我们就按照package的层次关系,正确调用了mole_11中的函数。

二.使用通配符*,导入某个mole中的所有元素
答案就在__init__.py中。我们在subPack1的__init__.py文件中写

__all__ = ['mole_13', 'mole_12']

然后进入python
>>>from package1.subPack1 import *
>>>mole_11.funcA()
Traceback (most recent call last):
File "", line 1, in
ImportError: No mole named mole_11

也就是说,以*导入时,package内的mole是受__init__.py*的。

三.在package内部互相调用。
1.如果希望调用同一个package中的mole,则直接import即可。也就是说,在mole_12.py中,可以直接使用
import mole_11

2.如果不在同一个package中,例如我们希望在mole_21.py中调用mole_11.py中的FuncA,则应该这样:
from mole_11包名.mole_11 import funcA

四.Python如何找到我们定义的mole?
在标准包sys中path属性记录了Python的包路径。
import sys
print(sys.path)
通常我们可以将mole的包路径放到环境变量PYTHONPATH中,该环境变量会自动添加到sys.path属性.
另一种方便的方法是编程中直接指定我们的mole路径到sys.path 中。
常用的话也可以放在python27\lib\site-packages文件夹下。

热心网友 时间:2022-04-18 06:57

自己写的模块,要放在需要导入文件同一个目录或者放在lib或者script目录(默认的模块目录)
然后,import 名字 就行。主要不要带后缀,带文件名就行

热心网友 时间:2022-04-18 08:32

我也不组队哦
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
刷宝账号注销个人信息还在吗 ...没声音 我可以听到对方说话 但是对方那里却听不到我的 麦克风... 格美台风的路线 台风格美经过哪里 三号台风格美路线 台风格美北上路线 2.制作底面直径为8厘米,高为10厘米的圆柱形茶叶盒,至少需要多少平方厘 ... 茶叶桶的底面直径为十厘米,高为20厘米吧,这样两个茶叶桶又帮装纸装... ...形,底面直径是10cm,这种包装的茶叶按图中所示的方式装入长方体纸箱... ...底面直径是10cm,高是15cm,将12盒这种包装的茶叶按 去年的防晒霜还能用吗? 过期了的防晒霜还能用吗 豆芽机都有哪些材质的? 涂了防晒霜还会晒黑吗 防晒霜到底怎么用呢?为什么涂了防晒霜还是会被晒黑呢 防晒霜好还是防晒乳好?有什么区别呢? 防晒霜第二年还能用吗 涂防晒霜之前还要涂什么? 为什么擦了防晒霜还是会晒黑 该账户已熔断是什么意思 算命术语 熔断是什么意思 请问在EXCEL每个单元格中怎么加标签备注?就右上角一个小标的那种> 在excel中需要给一些信息添加备注,怎样使用IF函数 自己做的卤菜怎么保存 手机数据线连接打印机需要下载什么软件 手机数据线连接打印机怎么打印 手机数据线连接打印机需要下载什么软件? 手机USB打印是做什么的 手机usb连接线连接打印机打印文件 手机可以用数据线连接打印机吗 Python 调用自定义类 python怎么导入自定义函数 Python编程中,引入自定义类后出现如图问题,什么原因造成的,该怎么解决。 python导入自定义的类失败 python 如何调用自定义模块中的类 求大神告知为什么python导入自定义模块时失败,导入自带模块却可以。 质量管理体系三个过程与ISO9001对应关系 若自定义模块与系统模块同名, python会导入自定义模块,如何导入系统... ISO9001的新旧版本对照 win7系统下运行python3.7的类导入问题 iso9001:2015 to iso9001:2008 质量管理体系新旧版标准要求对照表 python 给函数传递一个自定义的类的实例,是传值还是传址? python导入同一目录下的自定义模块,出现ModuleNotFoundError ISO9001-2015及IATF16949-2016质量管理体系与通用QSB+、BIQS对照表 iso9001质量管理体系有什么版本 ISO9001和ISO9002有什么区别?拜托了各位 谢谢 ISO:9001质量体系标准最新文件 ISO9001质量管理体系有哪些内容啊 如何去除门上贴过春联后的残留双面胶带的粘胶 实名认证已经改过了一次改错了还想改一次怎么办?