Python中如何添加自定义模块
作者:silencement 发布时间:2023-06-09 23:24:38
一般来说,我们会将自己写的Python模块与python自带的模块分开存放以达到便于维护的目的。那么如何在Python中添加自定义的模块呢?
在解答这个问题之前,我们首先要明确两点:
1.严格区分包(package)和文件夹。包的定义就是包含__init__.py的文件夹。如果没有__init__.py,那么就是普通的文件夹。
2.模块导入写法,注意只要包路径,不要文件夹路径。
Python 运行环境在查找库文件时是对 sys.path 列表进行遍历,如果我们想在运行环境中注册新的类库,主要有以下2种方法:
1. 在sys.path列表中添加新的路径。
2. 将库文件复制到sys.path列表中的目录里(如site-packages目录)。
我们可以通过运行一下代码来查看sys.path
import sys
print sys.path
运行结果
['/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-old', '/System/Library/Frameworks/Python.
framework/Versions/2.7/lib/python2.7/lib-dynload', '/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/
lib/python/PyObjC', '/Library/Python/2.7/site-packages']
这两种办法中第一种比较简单,而且对环境的影响最小。
下面我们来看一下第一种方法具体如何操作:
在python安装目录的site-package文件夹中新建pythontab.pth,上面site-package的路径是:/Library/Python/2.7/site-packages,文件的内容是:需要导入的package所在的文件夹路径。
这样,Python 在遍历已知的库文件目录过程中,如果见到一个 .pth 文件,就会将文件中所记录的路径加入到 sys.path 设置中,这样 .pth 文件说指明的package也就可以被Python运行环境顺利找到, 我们就可以像使用内置模块一样引入自定义模块了。
如果缺省的sys.path中没有含有自己的模块或包的路径,我们也可以使用sys.path.apend方法来动态加入包路径。
知识点扩展:
Python中添加自定义模块原则:
1. 严格区分包和文件夹。包的定义就是包含__init__.py的文件夹。如果没有__init__.py,那么就是普通的文件夹。
2. 导入package。 在python 安装目录的site-package文件夹中新建xxx.pth,内容是需要导入的package所在的文件夹路径。
3. 导入模块。就是一般的模块导入写法,注意只要包路径,不要文件夹路径。
来源:https://www.py.cn/faq/python/11243.html
猜你喜欢
- 一、h5py模块介绍本文只是简单的对h5py库的基本创建文件,数据集和读取数据的方式进行介绍!如果读者需要进一步详细的学习h5py的更多知识
- 不得不说使用python库matplotlib绘图确实比较丑,但使用起来还算是比较方便,做自己的小小研究可以使用。这里记录一些统计作图方法,
- chat.html <html> <head><title>asp之家-简单聊天&l
- Python最基本的数据结构是序列(列表/元组)。一个序列中的每个元素都分配有一个数字- 它的位置或索引。第一个索引是0,第二个
- 本文实例为大家分享了python实现文件批量重命名的具体代码,供大家参考,具体内容如下代码:# -*- coding:utf-8 -*-im
- 之前没有注意过div的background-image这个属性,只是设置它的url,今天遇到一个问题特此做一下记录。 <div id=
- python保存文本文件的方法:使用python内置的open()类可以打开文本文件,向文件里面写入数据可以用write()函数,写完之后,
- 我们经常会有对图像边缘做扩展的需求.比如希望卷积后得到的矩阵大小不变希望改变图像大小,但是不改变宽高比opencv实现opencv中使用co
- 背景 还是学院和专业的关系,我需要保持点击提交按钮后,页面select中继续维持提交前的值 网上有几种办法,要么通过url跳转时候附带参数形
- 本文实例汇总了python求列表交集的方法。分享给大家供大家参考。具体方法如下:交集对于给定的两个集合A 和 集合B 的交集是指含有所有既属
- 一、低配logging日志总共分为以下五个级别,这个五个级别自下而上进行匹配 debug-->info-->warning--&
- <script> Array.prototype.swap = function(i, j) { var temp = this
- 我们给大家详细分析了一下在JS调试的时候经常用到的断点调试,并把经验和技巧做了总结,以下是全部内容:1.断点调试是啥?难不难?断点调试其实并
- 本章为大家介绍的模块,在python2的时候,并不受宠,主要的问题是存在安全漏洞,发现问题就要及时解决,因此在现在3版本中,已经得到了妥善的
- 以下效率,是奔腾 dual1.6G HZ,1G内存电脑,ie6.0下toggle()与slideToggle("fast"
- 之前,我介绍了学习安装并配置前端自动化工具Gulp,觉得gulp确实比grunt的配置简单很多,于是我决定再深入学习一下gulp,就去网上查
- 我们知道numpy.ndarray.reshape()是用来改变numpy数组的形状的,但是它的参数会有一些特殊的用法,这里我们进一步说明一
- 最近在调代码,碰到幂函数、指数函数,总是提示ValueError: math domain errorValueError: negativ
- 上一篇文章中我们了解到oracle常见故障类别及规划解析,接下来,我们看看oracle数据库ORA-01196错误解决的相关内容,具体如下:
- golang1.16也在今天正式发布了。原定计划是2月1号年前发布的,不过迟到也是golang的老传统了,正好也趁着最后的假期快速预览一下g