python的包

2023-10-30

什么是模块:xxx。py文件
社么是包:多个模块组成的文件夹
为啥要使用模块:
让我下次直接使用,不需要再重写,或者方便多人开发

1、新建一个文件夹testModel,

在此文件夹中创建一个名为 __init__.py的文件,此时python解释器就认为它是一个包,

2、引用这个包的方法:

我先在我创建的testModle中创建一个新的模块 aa.py,简单写入测试内容:

def AA():
  print('你已经成功引入这个包')

我们在这个包的外面新建一个test.py
执行以下代码,或者用交互的方式执行,

import testModle.aa
testModle.aa.AA()

如果出现以下结果,说明testModle这个包已经创建,并执行成功。

如果aa模块有多个def函数我们可以用testModle.aa.函数名调用所需要的函数,有没有一种方法可以直接写函数名调用呢?

这里介绍另一种引入方式(以引入随机数函数为例:)

from  random import randint
num = randint(1,10)
print(num)

我们只导入了random包里面的randint方法,如果要导入两个
可以这样写from random import randint,randrange,如果导入多个则可以from random import*
,但是不建议这样用,原因是:
如果你导入了两个不同的模块,但是这两个模块中存在相同的方法(函数),那么后引入的那个模块中的方法就会覆盖前面模块中相同的方法

总结:

经过测试发现from random import*好像只能导入模块不能导入包,

导入包,

from testModel import *
AA()
Bb()

这样总是出错,但是导入模块就可以随便用里面的方法,只写方法明就ok,如下:

from aa import *
AA()
A2()

3.__init__.py
这个文件可以写入__all__
假如你的包中有两个模块 :aa,bb。
from random import *:直接导入random包的所有模块,但是你只想要aa模块导入,除了 from random import aa 这种方法还可以用__all__
在文件__init__.py中加入代码:

__all__ = ['aa']

all属性由列表构成,它规定了模块的所有可见方法,会使属性列表之外的成员全部私有化。

只有在执行语句 from module import * 时,all属性才会起作用。此时所有枚举的成员被import,而其他成员被私有化。

但是在__init__.py中加入__all__,之后model也可以用import * ,这样写的

__all__ = ['aa','bb']

以下代码又可以用了,

from testModel import *
aa.AA()
bb.bb()

这里有点疑问,未0完待续。。。。

3.制作一个自己的包

根据上面建的包,现在应该是这样的目录结构:

testModel
├── aa.py
├── bb.py
└── __init__.py

接下来在testModel里面建个文件 :setup.py
在这个文件中写入:

from distutils.core import setup

setup(name="lxy", version="1.0", description="lxy's module", author="wenwen", py_modules=['aa', 'bb'])

以交互的方式运行setup.py,输入以下代码:

python setup.py build

执行结果:

running build
running build_py
creating build
creating build\lib
copying aa.py -> build\lib
copying bb.py -> build\lib

这样标识执行成功,你的目录变成一下结构:

testModel
├── aa.py
├── bb.py
├── __init__.py
├── setup.py
└── build
    └── lib
     ├──aa.py
         └──bb.py

接下来执行:

linux 环境: python setup.py sdist
win环境:python setup.py bdist_wininst

你会发现多了个dist文件夹,里面有安装程序(tar.gz或者。exe),这就是你真正做完的包

testModel
├── MANIFEST
├── aa.py
├── bb.py
├── __init__.py
├── setup.py
├── build
    └── lib
     ├──aa.py
         └──bb.py
         └── build
└── dist
    └──lxy-1.0.tar.gz

包做完之后就可以开始安装了:

模块安装、使用
1.安装的方式

找到模块的压缩包
解压
进入文件夹
执行命令python setup.py install

注意:

如果在install的时候,执行目录安装,可以使用python setup.py install --prefix=安装路径

2.模块的引入

在程序中,使用from import 即可完成对安装的模块使用

from 模块名 import 模块名或者*

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

python的包 的相关文章

  • 使用 psycopg2 在 python 中执行查询时出现“编程错误:语法错误位于或附近”

    我正在运行 Python v 2 7 和 psycopg2 v 2 5 我有一个 postgresql 数据库函数 它将 SQL 查询作为文本字段返回 我使用以下代码来调用该函数并从文本字段中提取查询 cur2 execute SELECT
  • 在 python 程序中合并第三方库的最佳实践是什么?

    下午好 我正在为我的工作编写一个中小型Python程序 该任务需要我使用 Excel 库xlwt and xlrd 以及一个用于查询 Oracle 数据库的库 称为CX Oracle 我正在通过版本控制系统 即CVS 开发该项目 我想知道围
  • OpenCV Python cv2.mixChannels()

    我试图将其从 C 转换为 Python 但它给出了不同的色调结果 In C Transform it to HSV cvtColor src hsv CV BGR2HSV Use only the Hue value hue create
  • 如何在flask中使用g.user全局

    据我了解 Flask 中的 g 变量 它应该为我提供一个全局位置来存储数据 例如登录后保存当前用户 它是否正确 我希望我的导航在登录后在整个网站上显示我的用户名 我的观点包含 from Flask import g among other
  • 使用带有关键字参数的 map() 函数

    这是我尝试使用的循环map功能于 volume ids 1 2 3 4 5 ip 172 12 13 122 for volume id in volume ids my function volume id ip ip 我有办法做到这一点
  • 如何从网页中嵌入的 Tableau 图表中抓取工具提示值

    我试图弄清楚是否有一种方法以及如何使用 python 从网页中的 Tableau 嵌入图形中抓取工具提示值 以下是当用户将鼠标悬停在条形上时带有工具提示的图表示例 我从要从中抓取的原始网页中获取了此网址 https covid19 colo
  • Spark KMeans 无法处理大数据吗?

    KMeans 有几个参数training http spark apache org docs latest api python pyspark mllib html highlight kmeans pyspark mllib clus
  • 绘制方程

    我正在尝试创建一个函数 它将绘制我告诉它的任何公式 import numpy as np import matplotlib pyplot as plt def graph formula x range x np array x rang
  • 从 Flask 访问 Heroku 变量

    我已经使用以下命令在 Heroku 配置中设置了数据库变量 heroku config add server xxx xxx xxx xxx heroku config add user userName heroku config add
  • BeautifulSoup 中的嵌套标签 - Python

    我在网站和 stackoverflow 上查看了许多示例 但找不到解决我的问题的通用解决方案 我正在处理一个非常混乱的网站 我想抓取一些数据 标记看起来像这样 table tbody tr tr tr td td td table tr t
  • 在f字符串中转义字符[重复]

    这个问题在这里已经有答案了 我遇到了以下问题f string gt gt gt a hello how to print hello gt gt gt f a a gt gt gt f a File
  • 如何在Python中对类别进行加权随机抽样

    给定一个元组列表 其中每个元组都包含一个概率和一个项目 我想根据其概率对项目进行采样 例如 给出列表 3 a 4 b 3 c 我想在 40 的时间内对 b 进行采样 在 python 中执行此操作的规范方法是什么 我查看了 random 模
  • 向 Altair 图表添加背景实心填充

    I like Altair a lot for making graphs in Python As a tribute I wanted to regenerate the Economist graph s in Mistakes we
  • 每个 X 具有多个 Y 值的 Python 散点图

    我正在尝试使用 Python 创建一个散点图 其中包含两个 X 类别 cat1 cat2 每个类别都有多个 Y 值 如果每个 X 值的 Y 值的数量相同 我可以使用以下代码使其工作 import numpy as np import mat
  • 对年龄列进行分组/分类

    我有一个数据框说df有一个柱子 Ages gt gt gt df Age 0 22 1 38 2 26 3 35 4 35 5 1 6 54 我想对这个年龄段进行分组并创建一个像这样的新专栏 If age gt 0 age lt 2 the
  • 使用其构造函数初始化 OrderedDict 以便保留初始数据的顺序的正确方法?

    初始化有序字典 OD 以使其保留初始数据的顺序的正确方法是什么 from collections import OrderedDict Obviously wrong because regular dict loses order d O
  • 发送用户注册密码,django-allauth

    我在 django 应用程序上使用 django alluth 进行身份验证 注册 我需要创建一个自定义注册表单 其中只有一个字段 电子邮件 密码将在服务器上生成 这是我创建的表格 from django import forms from
  • Python 类继承 - 诡异的动作

    我观察到类继承有一个奇怪的效果 对于我正在处理的项目 我正在创建一个类来充当另一个模块的类的包装器 我正在使用第 3 方 aeidon 模块 用于操作字幕文件 但问题可能不太具体 以下是您通常如何使用该模块 project aeidon P
  • Python Selenium:如何在文本文件中打印网站上的值?

    我正在尝试编写一个脚本 该脚本将从 tulsaspca org 网站获取以下 6 个值并将其打印在 txt 文件中 最终输出应该是 905 4896 7105 23194 1004 42000 放置的动物 的 HTML span class
  • 如何使用 Pycharm 安装 tkinter? [复制]

    这个问题在这里已经有答案了 I used sudo apt get install python3 6 tk而且效果很好 如果我在终端中打开 python Tkinter 就可以工作 但我无法将其安装在我的 Pycharm 项目上 pip

随机推荐

  • 第十四届蓝桥杯模拟赛(第三期)——Java版

    第一题 请找到一个大于 2022 的最小数 这个数转换成十六进制之后 所有的数位 不含前导 0 都为字母 A 到 F 请将这个数的十进制形式作为答案提交 public class Main public static void main S
  • MacBook m1pro在conda环境关于架构出现过的问题

    回想一下十月份的时候刚拿到电脑做了点啥 刚开始没有进行转换架构的虚拟环境的设置 导致好像是安装pyqt5 一直失败 总之查了半天 最后指向似乎是架构问题 然后利用https www bilibili com read cv13742031
  • vue3项目引入typescript总结

    tsconfig json详细配置 根选项 include 指定被编译文件所在的目录 exclude 指定不需要被编译的目录 extends 指定要继承的配置文件 files 指定被编译的文件 references 项目引用 是 TS 3
  • 使用python-pyhdfs连接hdfs时报错

    一 问题描述 raise ConnectionError e request request ConnectionError HTTPConnectionPool host a port 50075 Max retries exceeded
  • python爬虫js逆向学习(三)

    1 问题分析 1 1 查询条件设置后进行点击事件 可抓取到ajax请求的获取的数据包 1 2 对数据包请求过程进行分析 发现Formdata及respopnse都是加密的且formdata中的参数每次刷新后都不同 1 3 既然参数及相应数据
  • 哈希桶的实现

    上一篇博客中介绍了用闭散列法的二次探测和开链法构造哈希表的原理即实现方式 构造哈希表的闭散列法之二次探测地址 http blog csdn net qq 36221862 article details 73488162 下面介绍另一种方法
  • QT__TCP

    QTcpSocket断开自动重新连接 auto connect after disconnected 转载于 http blog csdn net owldestiny article details 8452605 QTcpSocket断
  • 小程序引入vant-weapp

    小程序引入第3方样式库
  • 灰度直方图OpenCV

    recognition cpp 此文件包含 main 函数 程序执行将在此处开始并结束 include pch h include
  • Java实现判断是否为最新版本方法

    判断是否为最新版本方法 将版本号根据 切分为int数组 比较 param localVersion 本地版本号 param onlineVersion 线上版本号 return 是否为新版本 throws IllegalArgumentEx
  • NumPy模块:Python科学计算神器之一

    欢迎来到我的博客 作者 秋无之地 简介 CSDN爬虫 后端 大数据领域创作者 目前从事python爬虫 后端和大数据等相关工作 主要擅长领域有 爬虫 后端 大数据开发 数据分析等 欢迎小伙伴们点赞 收藏 留言 关注 关注必回关 上一篇文章已
  • nginx反向代理(前端 开发环境、测试环境、生产环境 解决方案)

    什么是Nginx Nginx engine x 是一个高性能的HTTP和反向代理服务 也是一个IMAP POP3 SMTP服务 Nginx是由伊戈尔 赛索耶夫为俄罗斯访问量第二的Rambler ru站点 俄文 开发的 第一个公开版本0 1
  • 团队耗时半年,整理两份非常夯实算法工程师基本功。

    这几年来 圈子内越来越卷的话题持续不下 再加上大厂程序员 被毕业 再就业 的新闻层出不穷 贩卖给人们的焦虑也越来越多 2016年 深度学习的春天是不是要来了 2017年 人工智能是不是一个泡沫 2018年 算法岗是否值得进入 2019年 如
  • pandas使用datetime作为索引并用groupby调用tseries.offsets时间位移分组

    import numpy as np import pandas as pd from datetime import datetime from pandas tseries offsets import Day MonthEnd sj
  • 路由控制配置network命令解析

    network命令 1 命令功能 network命令用来配置BGP将IP路由表中的路由以静态方式加入到BGP路由表中并发布给对等体 undo network命令用来删除指定的以静态方式加入到BGP路由表中的路由 缺省情况下 BGP不将IP路
  • C# 获取系统Icon、获取文件相关的Icon

    1 获取系统Icon 工具下载SystemIcon exe using System using System Collections Generic using System ComponentModel using System Dat
  • 什么是DDoS攻击?

    DDoS攻击是目前最常见的网络攻击方式之一 其见效快 成本低的特点 让DDoS这种攻击方式深受不法分子的喜爱 DDoS攻击经过十几年的发展 已经 进化 的越来越复杂 黑客不断升级新的攻击方式以便于绕过各种安全防御措施 一 什么是DDoS攻击
  • QT实例 - 实现http通信

    QT实现通过HTTP与服务器进行交互 原文链接 https blog csdn net hwc3737 article details 108367037 添加依赖 在项目的 pro文件中添加 QT network 引入相关头文件 incl
  • 生命在于学习——指纹混淆技术学习

    一 前言 本篇文章仅为学习笔记记录 不得用于违规用途 本篇文章为安全社公众号的Poker安全所发 本文仅为学习复现 二 介绍 指纹混淆技术 顾名思义 就是迷惑指纹扫描识别技术 三 思路 作者的思路 1 伪装CMS 作者第一个想到的就是wor
  • python的包

    什么是模块 xxx py文件 社么是包 多个模块组成的文件夹 为啥要使用模块 让我下次直接使用 不需要再重写 或者方便多人开发 1 新建一个文件夹testModel 在此文件夹中创建一个名为 init py的文件 此时python解释器就认