GVKun编程网logo

Python 包和模块 ( Module )(python包与模块)

10

如果您想了解Python包和模块(Module)和python包与模块的知识,那么本篇文章将是您的不二之选。我们将深入剖析Python包和模块(Module)的各个方面,并为您解答python包与模块

如果您想了解Python 包和模块 ( Module )python包与模块的知识,那么本篇文章将是您的不二之选。我们将深入剖析Python 包和模块 ( Module )的各个方面,并为您解答python包与模块的疑在这篇文章中,我们将为您介绍Python 包和模块 ( Module )的相关知识,同时也会详细的解释python包与模块的运用方法,并给出实际的案例分析,希望能帮助到您!

本文目录一览:

Python 包和模块 ( Module )(python包与模块)

Python 包和模块 ( Module )(python包与模块)

模块:

为了编写可维护的代码,我们把很多函数分组,分别放到不同的文件里,这样,每个文件包含的代码就相对较少,很多编程语言都采用这种组织代码的方式。在 Python 中,一个. py 文件就称之为一个模块(Module)。

最大的好处是大大提高了代码的可维护性。其次,编写代码不必从零开始。当一个模块编写完毕,就可以被其他地方引用。我们在编写程序的时候,也经常引用其他模块,包括 Python 内置的模块和来自第三方的模块。

模块创建方法:

1、如图所示新建一个文件夹,如 main

2、在文件夹下创建一个 __init__.py 的文件,使他成为一个包

3、在包下新建一个 index.py 的模块文件

模块

注意:xxx.py 不能和系统模块重名,否则无法导入,如不能创建一个 sys.py 的文件。

模块导入方法:

from 包名 import 模块名(文件名)

模块

如图所示,模块导入方法

from main import index

执行模块里的函数

index.foo()

导入包中模块的函数

from main.index import foo #导入包中模块的函数
foo() #执行这个函数

直接导入模块

import main.index            #直接用import导入模块,必须带上包名    
执行函数 main.index.foo()

#执行函数时,也需要带上包名和模块名,对应反射方法因路径不同,执行稍有不同

注意上述三种导入方法:执行的函数方法也不一样

__init__.py

模块一般放在包内,包内必须含有1个__init__.py 的文件,否则会被当成1个普通的文件夹。
__int__.py

常用命令:

if __name__ == ''__main__'':

__name__ :记录模块的名称

判断是否在主程序下,只有在当前程序(模块)下,下面命令才执行,
假如 a.py 定义了一个函数里面有一个print, b模块调用a模块,
如果不想b模块打印a模块里面的内容,可以把 a 模块里的打印内容放在 if __name__ == ''__main__'' 下

__file__ 当前路径

__doc__ 文档信息,备注注释

#!/usr/bin/env python
#coding:utf-8
''''''
author:leeson
假设文件在 E:\workspace\day3\\file\demo.py 目录下
''''''
print(__file__)
print(__doc__)

输出结果:

结果

CentOS7.5 Python3 安装 pip 报错:ModuleNotFoundError: No module named ''_ctypes'' --Python3

CentOS7.5 Python3 安装 pip 报错:ModuleNotFoundError: No module named ''_ctypes'' --Python3

1、问题:pyhontModuleNotFoundError: No module named ''_ctypes'' 

操作系统:CentOS7.5

安装完 Pyhotn3 后 (如何安装 Python3,安装后我的 python、python3 命令指向 python3 版本;python2、python2.7 命令指向 python2.7 版本),发现没有安装两个版本都没有 pip。所以下载好 pip 包,用系统自带 python2 安装如下所示:

[root@VM_39_157_centos ~]# wget https://files.pythonhosted.org/packages/36/fa/51ca4d57392e2f69397cd6e5af23da2a8d37884a605f9e3f2d3bfdc48397/pip-19.0.3.tar.gz

[root@VM_39_157_centos ~]# tar pip-19.0.3.tar.gz

[root@VM_39_157_centos ~]# cd pip-19.0.3

[root@VM_39_157_centos ~]# python2 setup.py build

[root@VM_39_157_centos ~]# python2 setup.py install
 
以上完成 python2.7 对应的 pip 安装,但是使用相同的方式为 python3 安装 pip 出现如下错误:

pyhontModuleNotFoundError: No module named ''_ctypes'' 

2、解决方式:

安装依赖包 libffi-devel 包,然后重新编译安装 python3.7.0, 步骤如下

[root@VM_39_157_centos ~]# yum -y install libffi-devel

[root@VM_39_157_centos ~]# cd Python-3.7.0

[root@VM_39_157_centos Python-3.7.0]# make

[root@VM_39_157_centos Python-3.7.0]# make altinstall 

根据安装过程的提示信息,发现安装了 setuptools、pip

升级 pip:python3 -m pip install --upgrade pip

至此,入坑之路结束。

install module in python env(python 环境如何加载功能模块)

install module in python env(python 环境如何加载功能模块)

ImportError: No module named yara

#pip install yara

Pycharm ModuleNotFoundError: No module named // 从子目录导入 python 失败

Pycharm ModuleNotFoundError: No module named // 从子目录导入 python 失败

如果您查看 PyCharm 配置,有两个选项:

  1. 将内容根添加到 PYTHONPATH
  2. 将源根目录添加到 PYTHONPATH

它们被默认标记。

就您而言,第一个允许您正确运行脚本,因为它在 PYTHONPATH 环境变量中添加了 root_project 路径。

因此,如果您还想在命令行中运行脚本,您应该设置相同的变量。
你可以这样继续:

  1. 打开命令行

  2. 如果你使用的是 Linux,你可以使用

    导出 PYTHONPATH=

  3. 如果您使用的是 Windows,则可以使用

    SET PYTHONPATH=

  4. 运行脚本

    ~/Desktop/root_project/subfolder » python3 sub_script.py

请记住,export/set 命令不是永久的,它对当前命令行会话有效。

Python - 模块module

Python - 模块module


一、什么是模块

Python中,一个.py文件就称之为一个模块。
那么使用模块有什么好处呢?

(1)提高了代码的可维护性。
(2)代码不必从零开始,当一个模块编写完毕后,就可以被其他地方应用。
(3)可以避免函数名和变量名冲突,相同的函数名和变量可以存放在不同的模块中,但是要注意尽量不要与内置函数名字冲突。
Python所有的内置函数:https://docs.python.org/3/lib...

为避免模块名冲突,python又引入了按目录来阻止模块冲突的方法,称为(python package)。
一个abc.py的文件就是一个名字为abc的模块,一个xyz.py的文件就是一个名字为xyz的模块。假如abcxyz这两个模块名字与其他模块冲突了,于是我们可以通过不同的包来组织模块,避免模块冲突。
则可为:

↓ mycompany      # 按目录存放
     _init_.py   # 模块名:mycompany
     abc.py      # 模块名:mycompany.abc
     xyz.py      # 模块名:mycompany.xyz

引入了包以后,只要顶层的包名不与别人冲突,那所有模块都不会与别人冲突。
每一个包目录下都会有一个_init_.py的文件,这个文件是必须存在的,否则python就把这个目录当成普通目录,而不是一个包。
_init_.py可以是空文件,也可以有python代码,因为_init_.py本身就是一个模块。

二、使用Python自带模块

Python内置了很多非常有用的模块,只要安装完毕,这些模块就可以通过import立刻导入使用。
例如下列小程序:以自建的sys模块,编写一个hello的模块hello.py

# !/usr/bin/env python    # -1-
# -*-coding:utf-8 -*-     # -2- 
_author_ = ''xionglp''      # 使用_author_变量把作者写进去

import sys   

def test(): 
    args = sys.argv  
    if len(args) == 1: 
        print (''hello,world!'') 
    elif len(args) ==2: 
        print(''hello,%s !''% args[1]) 
    else: 
        print(''too many arguments!'') 
if __name__ == ''__main__'':
    test()

说明:

  • 注释 # -1- :让该.py文件直接在unix/linux/mac上运行
  • 注释 # -2- :.py文件使用标准UTF-8 编码
  • import sys:导入sys模块。之后便可以利用sys这个变量,访问sys模块的所有功能。
    sys模块有一个argv变量,用list存储了命令行的所有参数。argv至少有一个元素,因为第一个参数永远是该.py文件的名称。
  • 当在命令行运行hello.py文件时,python解释器就把一个特殊变量__name__置为__main__。如果在其他地方导入该模块时,if判断将失败,即if仅在此模块单独运行时生效。因此这种if测试可以让一个模块通过命令行运行时执行一些额外的代码,最常见的就是运行测试。

在交互式环境(cmd)中导入该模块:

>>> import hello                         
>>> hello.test()                   
hello, world! 

三、安装使用第三方模块

除了Python自己的包,还可以安装安装第三方模块。第三方包安装是通过包管理工具pip完成的。
一般来说,第三方库都会在Python官方的pypi.python.org网站注册。所以要安装一个第三方库,必须先知道该库的名称,可以在官网或者pypi上搜索。比如Pillow的名称叫Pillow,因此,安装Pillow的命令就是:pip install Pillow

  • 步骤1:找到安装Python路径中的easy_install.exe,例如:D:PythonScripts
  • 步骤2:打开cmd,输入安装命令:easy_install.exe pip (pip安装成功)
  • 步骤3:在cmd下执行pip,输入命令:pip install pillow

如下:
clipboard.png

安装成功后便可以使用Pillow了。其他常用的第三方库还有:MySQL的驱动、用于科学计算的NumPy库等等。

pip升级:
在使用pip进行安装时,有时候会提示pip的版本太低,需要upgrade。提示会给出要执行的语句,按照提示执行就行。
执行命令:python –m pip install –upgrade pip

四、模块搜索路径

我们也可以导入自己写入的模块。当我们试图加载一个模块时,Python会在指定的路径下搜索对应的.py文件,如果找不到,就会报错,例如:

clipboard.png

默认情况下,Python解释器会搜索当前目录、所有已安装的内置模块和第三方模块,搜索路径存放在sys模块的path变量中:

>>>import sys
>>>sys.path

如果我们要添加自己的搜索目录,有两种方法:

  • 法一:直接修改sys.path,添加要搜索的目录,这种方法是在运行时修改,运行结束后失效。
>>> import sys
>>> sys.path.append(''/Users/xionglp/my_py_scripts'')
  • 法二:设置环境变量PYTHONPATH,该环境变量的内容会被自动添加到模块搜索路径中。设置方式与设置Path环境变量类似。注意只需要添加你自己的搜索路径,Python自己本身的搜索路径不受影响。

【补充点能量】if __name__ =="__main__":

  • __name__:为系统变量,有两个取值。当模块是被调用执行时,取值为模块的名字;当模块是直接执行时,则该变量取值为__name__
  • if __name__ == "__main__"实现的功能:可以让模块既可以导入到别的模块中用,也可以自己执行。
英文解释说:make a script both importable and executeable

例如:新建模块atest.py

# !/usr/bin/env python3
# -*- coding:utf-8 -*-
''a test module''
def addFunc(a, b):
    return a + b
print(''a_test_module\''s result is '', addFunc(1, 1))

新建模块anothertest.py

# !/usr/bin/env python3
# -*- coding :utf-8 -*-
''another test module''
import  atest
print(''调用another test module模块执行的结果时:'',atest.addFunc(12,23))

运行:

D:\Python_project>python atest.py
a_test_module''s result is  2
D:\Python_project>python anothertest.py
a_test_module''s result is  2
调用another test module模块执行的结果时: 35

说明:当运行anothertest.py的时候,先运行了atest.py,再运行anothertest.py。
若不希望出现atest的内容,python提供了一个系统变量:__name__。可以把被调用的测试代码写在if语句里,当调用该module时,此时的__name__取值为该模块的名字,所以if判断为假,不执行后续代码如下:

if __name__ == ''__main__'':`
       print (''atest的计算结果:'',addFunc(1,1))

则运行结果为:

D:\Python_project>python anothertest.py
调用another test module模块执行的结果时: 35

此时我们就得到了预期结果,不输出多余的结果。


❤ thanks for watching, keep on updating...

今天关于Python 包和模块 ( Module )python包与模块的讲解已经结束,谢谢您的阅读,如果想了解更多关于CentOS7.5 Python3 安装 pip 报错:ModuleNotFoundError: No module named ''_ctypes'' --Python3、install module in python env(python 环境如何加载功能模块)、Pycharm ModuleNotFoundError: No module named // 从子目录导入 python 失败、Python - 模块module的相关知识,请在本站搜索。

本文标签: