我的编程空间,编程开发者的网络收藏夹
学习永远不晚

python module manage

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

python module manage

python模块
    就是python的程序模块
    顶层文件
    模块文件1
    模块文件2    
    可以将代码量较大的程序分割成多个有组织的、彼此独立但又能互相交互的代码片段,这些自我包含的有组织的代码段就是模块。模块在物理形式上表现为以.py结尾的代码文件。一个文件被看作一个独立的模块,一个模块也可以被看作是一个文件。模块的文件名就是模块的名字加上扩展名.py。每个模块都有自己的名称空间。
    python允许“导入”其它模块以实现代码重用,从而也实现了将独立的代码文件组织成更大的程序系统。python中,模块也是对象;在一个模块顶层定义的所有变量都在被导入时成为了被导入模块的属性。
   
python的程序架构
    一个python程序通常包括一个顶层程序文件和其它的模块文件(0个、1个或多个)
    顶层文件:包含了程序的主要控制流程
    模块文件:为顶层文件或其它模块提供各种功能性组件。模块首次导入(或重载)时,python会立即执行模块文件的顶层程序代码(不在函数内的代码),而位于函数主体内的代码直到函数被调用后才会执行。python也自带了很多模块,可以使用help(module)查看,这些被称为python标准库文件。
   
模块的执行环境
    模块是被导入的(import),但模块也可以导入和使用其它模块,这些模块可以用python或其它编程语言写成。
    模块可内含变量、函数以及类来进行其工作,而函数和类可以包含变量和其它元素。
    建议:在顶层文件可以出现大量的控制流语句,而其它的被调用文件仅包含变量、函数及类,这样程序在执行时效率才会高。

python导入模块 
    在导入模块时只能使用模块名,而不能使用带.py后缀的模块文件名
    import语句:导入指定的整个模块,包括生成一个以模块名命名的名称空间
    import module1[, module2[, ... moduleN ]]       建议一个import语句只导入一个模块
    import module as module_alias
    from-import语句: 常用于只导入指定模拟的部分属性至当前名称空间。
    from module import name1[, name2[, ... nameN ]]    
        例:from random import choice,randint,random
    建议:在顶层文件可以出现大量的控制流语句,而其它的被调用文件仅包含变量、函数及类,这样程序在执行时效率才会高。

    import 和 from - import是赋值语句
    import和from 是可执行语句,类似于def,因此,它们可以嵌套在if测试中,出现于def中等等
    python执行到这些语句时才会对其进行解析,这意味着,所有来自模块的属性仅在import语句执行后才能使用。
    import 和from 都是隐性赋值语句
    import 将整个模块对象赋值给一个变量名;from将一个或多个变量名赋值给导入此模块的模块中的同名对象
    模块就是名称空间:模块的名称空间可以通过属性__dict__或dir(M)获取;模块属性可通过点号(.)运算符获取,格式为M.attr;模块是一个独立的作用域(本地变量就是全局变量)

    import的工作机制
    import语句导入指定的模块时会执行三个步骤:
       (1) 找到模块文件:在指定的路径下搜索模块文件
       (2) 编译成字节码:文件导入时就会编译,因此顶层文件的.pyc字节码文件在内部使用后会被丢弃,只有被导入的文件才会留下.pyc文件。
       (3) 执行模块的代码来创建其所有定义的对象:模块文件中的所有语句会依次执行,从头至尾,而此步骤中任何对变量名的赋值运算,都会产生所得到的模块文件的属性。
    注意:模块只在第一次导入时才会执行如上步骤。后续的导入操作只不过是提取内存中已加载的模块对象。reload可用于重新加载模块。

    模块搜索:
    python解释器在import模块时必须先找到对应的模块文件
    程序的主目录;PYTHONPATH目录(如果设置了些变量);标准链接库目录;任何.pth文件的内容(如果存在.pth文件)
    这四个组件组合起来即为sys.path所包含的路径,而python会选择"在搜索路径中的第一个符合导入文件名"的文件。
       import sys
       sys.path    返回一个路径列表,该路径列表是python解释器需要搜索的路径顺序列表
       
       例:
       mkdir /tmp/python27/lib
       vim /tmp/python27/lib/mymod.py
       #!/usr/local/python27/bin/python27
       #
       x = 30        
       def printInfo():
           print x + 30        
       class MyClass():
           data = 'hello myclass'
           def __init__(self,who):
               self.name = who
           def printName(self):
               print self.data,self.data                
       
       import mymod        在python中导入mymod模块时,提供找不到该模块文件,系统报错
       sys.path.append('/tmp/python27/lib')    修改sys.path的值,追加指定位置
       print sys.path              确认sys.path是否追加成功
       import mymod        再次导入mymod模块,导入成功
       mymod.x                 执行模块的x属性
       mymod.printInfo()     执行模拟的函数
       inst1 = mymod.MyClass('tom')        将模块中的类实例化成对象
       inst1.data          返回inst1实例的data属性
       inst1.name          返回inst1实例的name属性
       inst1.printName()      执行inst1实例的printName()方法(即函数)
       mymod.__name__      返回mymod模块的名称
       
       vim /tmp/python27/lib/mymod.py
           if __name__ = '__main__':
               printInfo()
               inst2 = MyClass('jerry')
               print inst2.data
               print inst2.name            
    如果有多个模块,而且这些模块又有关联性,不能单独使用,此时就需要使用包。
   
Python包
    包用于将一组模块归并到一个目录中,此目录即为包,目录名即为包名。包是一个有层次的文件目录结构,它定义了一个由模块和子包组成的python应用程序执行环境。基于包,python在执行模块导入时可以指定模块的导入路径。
    import dir1.dir2.mod1
    python包可以非常便捷的将我们能够把一类具有特定关联性的模块放在一起来生成一个功能 更强大的,能够自我组织的目录结构,这就叫做包。            
    要使用如下图所示的package1,则py_pkg_mod容器必须要在模块搜索路径中。导入时可以执行:import package1.mod1 即可
    包导入语句的路径内的每个目录内都必须有__init__.py文件。__init__.py可包含python代码,但通常为空,仅用于扮演包初始化的挂钩、替目录产生模块命名空间以及使用目录导入时实现from * 行为的角色。
                    →    package1    →    __init__.py
                                        →    mod1.py
        py_pkg_mod    →    package2    →    __init__.py
                                        →    mod2.py
                    →    mod3.py
   
       例:
           mkdir /tmp/python27/lib/pkg1
           touch /tmp/python27/lib/pkg1/__init__.py
           cp /tmp/python27/lib/{mymod,pkg1/yanmod}
           import pkg1.yanmod
           pkg1.yanmod.x  

    模块的顶层执行及被导入
    一个模块文件可以同时支持顶层执行(作为顶层文件)或被导入(作为模块文件)
    每个模块都有一个名为__name__的内置属性,python会自动设置该属性。如果文件是以顶层程序文件执行,在启动时,__name__的值为"__main__"。如果是被导入,则__name__的值为模块名。
    通过在模块文件中检测自己的__name__属性,可以实现在执行时运行指定的代码。常用于模块的自我测试:
           #!/usr/bin/python
           #
           def testFunc():
               print "Hello, there ..."
           if __name__ == "__main__":
               testFunc()

发布python模块或程序
   python模块、扩展和应用程序可以按以下几种形式进行打包和发布
    压缩文件(使用distutils): windows的zip文件和类Unix平台的.tar.gz文件
    自动解包或自动安装可执行文件: windows中的.exe  
    自包含的,不要求安装的预备运行可执行程序:windows的.exe文件、unix上带有一个小的脚本前缀的IP压缩文件、Mac上的.app文件等。
    平台相关的安装程序:windows上的*.msi文件、Linux上常见的.rpm、class="lazy" data-src.rpm和.deb文件等
    python eggs:较流行的第三方扩展

   使用distutils发布模块
    distutils模块能够帮助完成模块或程序发布。“发布”是指一个文件集合,这些文件联合在一起可以使用distutils构建、打包和发布模块;创建好的发布可以用于安装、也可以上传到PyPI与他人共享。
    创建布发:(1)将各代码文件组织到模块容器中;(2)准备一个README或README.txt文件;(3)而后在容器中创建setup.py文件
       例:
           from distutils.core import setup
           setup(
               name    = 'testmod',    #此为包名
               version = '0.0.1',
               author  = 'me',
               author_email    = 'cyj@163.com',
               py_modules  = ['testmod'],      #此为所有模块名的列表
               url     =   'http://www.xxx.com',
               description =   'A simple module',
               )
               属性说明:
               name    包的名称
               author  作者名
               Version 版本号
               author_email    作者的电子邮箱
               maintainer  维护者的名称
               maintainer_emain    维护者的电子邮箱
               url 包的主页
               description 包的描述信息
               long_description    包的详细描述
               download_url        包的下载地址
               Classifiers     字符串分器列表
               platform        平台列表
               license         许可证
               py_modules  各模块名称组成的列表,这些模块可能位于包的根目录下(modname),也可能位于某个子包目录中(subpkg1.modname)。
               packages    各子包名称的列表
           以上大体可以分为两类:元数据信息和包中的内容列表。
    完成打包:在要发布的容器目录中执行“python setup.py sdist”命令就可以生成包了。包的使用就像ipython的使用一样:python setup.py build && python setup.py  install

       python setup.py  sdist 可以指定格式打包。要以指定格式打包可以加  --formats=...  参数
           zip:  zip file
           gztar: tar.gz file
           bztar: tar.bz2 file
           ztar: tar.Z file
           tar: tar file

       python setup.py bdist       要以bdist指定的格式有:
           gztar: tar.gz file
           ztar: tar.Z file
           tar: tar file
           zip: zip file
           rpm:  RPM Package
           pkgtool: Solaris pkgtool
           wininst: windows上自解压的zip格式包
           msi: Microsoft Installer

       以下专用命令不用为bdist指定参数
           bdist_dump:
           bdist_rpm:
           bdist_wininst:
           bdist_msi:

       获取帮助的方式:
           python setup.py --help
           python setup.py --help-command  所有可以使用的命令
           python setup.py COMMAND --help 获取特定命令的帮助
           python setup.py COMMAND --help-formats 获取特定命令支持的格式
               
           python setup.py bdist  --formats=rpm
           python setup.py bdist  --help
           pip , ease_install

       python安装包:
           python setup.py build <build之后会在当差目录下生成一个build目录>
           python setup.py install <该步骤可以直接触发build步骤>
         
       python setup.py build 时可以加一些参数:
           --build-base=/path/to/build_dir
        编译之后在build目录中会生成一个lib和lib.platform目录,它们存储即将安装的模块文件,其中lib目录存储纯python语言编写的模块文件,而lib.platform存储一些跟平台相关的模块文件。
        第三方模块的默认安装路径通常为:site-packages
        print sys.path可以查看到以上路径。

          自定义安装路径:
               --user=
               --prefix=
               --exec-prefix=

          深度定制:
               --install-purelib=/path/to/python_lib
               --install-platlib=/path/to/plat_lib
               --install-lib=/path/to/lib
               --install-scripts=/path/to/bin 可执行文件的安装路径。
               --install-data=
               --install-headers=

例:
   [root@master pkg1]# pwd
   /tmp/python/lib/packages/pkg1
   [root@master pkg1]# ls
   __init__.py  __init__.pyc  mod1.py  mod1.pyc  README  setup.py
   [root@master pkg1]# cat setup.py
   #!/usr/bin/python
   #
   from distutils.core import setup
   setup(
   name = 'mod1',
   version = '1.0',
   author = 'cyj',
   author_email = 'cyj@163.com',
   py_modules = ['mod1'],
   url = 'http://www.test.com',
   download_url= 'http://www.test.com/download',
   description = 'test module',
   )
   [root@master pkg1]# python setup.py sdist
   running sdist
   running check
   warning: sdist: manifest template 'MANIFEST.in' does not exist (using default file list)
   writing manifest file 'MANIFEST'
   creating mod1-1.0
   making hard links in mod1-1.0...
   hard linking README -> mod1-1.0
   hard linking mod1.py -> mod1-1.0
   hard linking setup.py -> mod1-1.0
   creating dist
   Creating tar archive
   removing 'mod1-1.0' (and everything under it)
   [root@master pkg1]# ls
   dist  __init__.py  __init__.pyc  MANIFEST  mod1.py  mod1.pyc  README  setup.py
   [root@master pkg1]# ls dist/
   mod1-1.0.tar.gz
   [root@master pkg1]#
   [root@master pkg1]# python setup.py bdist
   running bdist
   running bdist_dumb
   running build
   running build_py
   creating build
   creating build/lib
   copying mod1.py -> build/lib
   installing to build/bdist.linux-x86_64/dumb
   running install
   running install_lib
   creating build/bdist.linux-x86_64
   creating build/bdist.linux-x86_64/dumb
   creating build/bdist.linux-x86_64/dumb/usr
   creating build/bdist.linux-x86_64/dumb/usr/local
   creating build/bdist.linux-x86_64/dumb/usr/local/python27
   creating build/bdist.linux-x86_64/dumb/usr/local/python27/lib
   creating build/bdist.linux-x86_64/dumb/usr/local/python27/lib/python2.7
   creating build/bdist.linux-x86_64/dumb/usr/local/python27/lib/python2.7/site-packages
   copying build/lib/mod1.py -> build/bdist.linux-x86_64/dumb/usr/local/python27/lib/python2.7/site-packages
   byte-compiling build/bdist.linux-x86_64/dumb/usr/local/python27/lib/python2.7/site-packages/mod1.py to mod1.pyc
   running install_egg_info
   Writing build/bdist.linux-x86_64/dumb/usr/local/python27/lib/python2.7/site-packages/mod1-1.0-py2.7.egg-info
   Creating tar archive
   removing 'build/bdist.linux-x86_64/dumb' (and everything under it)
   [root@master pkg1]# ls
   build  dist  __init__.py  __init__.pyc  MANIFEST  mod1.py  mod1.pyc  README  setup.py
   [root@master pkg1]# ls dist/
   mod1-1.0.linux-x86_64.tar.gz  mod1-1.0.tar.gz
   [root@master pkg1]#
   [root@master pkg1]# ls build/
   bdist.linux-x86_64  lib
   [root@master pkg1]# ls build/lib/
   mod1.py
   [root@master pkg1]# ls build/bdist.linux-x86_64/
   [root@master pkg1]#
   [root@master pkg1]# python setup.py bdist --format=rpm
   [root@master pkg1]# ls
   build  dist  __init__.py  __init__.pyc  MANIFEST  mod1.py  mod1.pyc  README  setup.py
   [root@master pkg1]# ls dist/
   mod1-1.0-1.noarch.rpm  mod1-1.0-1.class="lazy" data-src.rpm  mod1-1.0.linux-x86_64.tar.gz  mod1-1.0.tar.gz
   [root@master pkg1]#

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

python module manage

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

python module manage

python模块     就是python的程序模块     顶层文件     模块文件1     模块文件2         可以将代码量较大的程序分割成多个有组织的、彼此独立但又能互相交互的代码片段,这些自我包含的有组织的代码段就是模块
2023-01-31

Python -- abc module

今天,我们要讲的是python的ABC 模块这个模块是用来定义一个抽象类。具体的概要介绍可以浏览PEP 3119。register 首先注册一个abc的虚拟子类from abc import ABCMeta  class MyABC:   
2023-01-31

python onvif module

opencvr在添加onvif接口的时候,会导致store那边异常挂掉,也不知道为啥。于是,想着,是不是python有类似onvif的接口工具呢,可以执行一些小命令啥的,于是找到了onvif这个pyton的module。apt-get in
2023-01-31

python module usage

hello.py#!/usr/bin/python def hello():print "imported me,hello world"def login():print "I'm already login"test.py-------
2023-01-31

Python XML No module

在学习使用Python解析XML的过程中,使用官方文档https://docs.python.org/2/library/xml.etree.elementtree.html中的例子进行测试,代码如下:import xml.etree.El
2023-01-31

Python Module Auto R

Python 的模块一旦加载就会常驻内存,直到程序结束。再碰到 import 语句式只是修改名字空间,而不需要重新加载。这种机制是出于运行时的效率考虑,每遇到 import 的时候重新加载显然很低效。它也不会检查源文件的修改时间以确定是否重
2023-01-31

python错误:No module n

MySQL-python是Python访问MySQL数据库的第三方模块库;在安装过程中出现如下错误:[root@localhost MySQL-python-1.2.5]# python setup.py installTraceback
2023-01-31

python的module如何用

在Python中,我们使用`import`语句来导入模块。一旦导入了一个模块,我们就可以使用模块中定义的函数、变量和类。下面是导入模块的一些常见方式:1. 导入整个模块:```pythonimport module_name```这将导入整
2023-08-23

关于Python的Type,Module

关于Python的Type,Module,ClassPosted on 2007-07-13 by jeff类在Python中只是一种数据类型.而任何东西都是对象应该是针对Type来说的,对象是Type的实例,而并不限于是类的实例.要知道P
2023-01-31

关于Python中No module n

1.执行代码时报错 错误信息:ModuleNotFoundError: No module named 'requests' 错误截图: 查看python版本命令如下: python -V 查看python版本命令截图如下:2.解决办法1
2023-01-31

详解Python的Django框架中manage命令的使用与扩展

【简介】 django-admin.py是Django的一个用于管理任务的命令行工具。本文将描述它的大概用法。 另外,在每一个Django project中都会有一个manage.py。manage.py是对django-admin.py的
2022-06-04

module怎么在python中使用

今天就跟大家聊聊有关module怎么在python中使用,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。Python的优点有哪些1、简单易用,与C/C++、Java、C# 等传统语言相
2023-06-14

[Python]将你的module制作成

python解释器查找module进行加载的时候,查找的目录是存放在sys.path变量中的,sys.path变量中包含文件的当前目录。如果你想使用一个存放在其他目录的脚本,或者是其他系统的脚本,你可以将这些脚本制作成一个安装包,然后安装到
2023-01-31

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录