模块 - 模块就是包含函数的文件,用于共享代码。

  • 导入已有模块
# 导入整个模块
import random # 导入整个模块
print(random.randint(0,255)) #调用模块中的某个方法 # 导入模块的某个方法
from random import randint # 导入模块中的某个方法
print(randint(0,255)) # 调用模块的导入方法
  • 导入模块时搜索的模块位置

导入模块时,会从以下位置搜索模块

  1. 当前工作目录
  2. 解释器所在的site-packages位置 - 第三方Python模块默认地址(这是最好的选择)
  3. 标准库位置 - 这些目录包含构成标准库的所有模块
  • 发布自定义模块到 site-packages

例如,我们现在有一个vsearch.py的模块文件,放在E:\Code\PythonLearning\MyModules目录下。

通过以下步骤可以将模块安装到Site-packages位置:

1. 创建一个发布描述->用来明确我们希望setuptools安装到模块。

在E:\Code\PythonLearning\MyModules下新建两个文件,setup.py和Readme.txt.

Setup.py文件内容如下:

from setuptools import setup

setup(
name ='vsearch', # 发布包的名字,一般为模块名
version='1.0',
description='Search letters from pharse',
author='XXXX',
author_mail='XXXX@XXX.com',
url='',
py_modules='[vsearch]' # 包含在这个包中的所有py文件列表
)

2. 生成一个发布文件->通过在命令行上使用Python,创建一个可共享的发布文件,其中包含模块的代码。

# 进去cmd,用管理员权限运行一下代码来生成发布包
E:\Code\PythonLearning\MyModules>py -3 setup.py sdist

3. 安装发布文件->将发布文件安装到site-packages。

   进去disk目录后运行如下命令。

E:\Code\PythonLearning\MyModules\dist>py -3 -m pip install vsearch-1.0.tar.gz

看到Successfully installed vsearch-1.0说明安装成功。

此时在E:\Python36-32\Lib\site-packages文件夹下可以看到安装的模块。

  • 安装发布文件时碰到问题:

Could not install packages due to an EnvironmentError: [Errno 2] No such file or directory: 'E:\\Code\\PythonLearning\\MyModules\\dist\\vsearch-1.0.tar'

解决方案:

原因是因为文件隐藏了后缀名,所以我们输入的文件名其实不全,导致找不到。

可以用dir查看详细的文件名,或者将文件显示后缀名后,把原命令中文件名改为带后缀的完成名称即可。

如改为

py -3 -m pip install vsearch-1.0.tar.gz

Python 5 -- 模块的更多相关文章

  1. Python标准模块--threading

    1 模块简介 threading模块在Python1.5.2中首次引入,是低级thread模块的一个增强版.threading模块让线程使用起来更加容易,允许程序同一时间运行多个操作. 不过请注意,P ...

  2. Python的模块引用和查找路径

    模块间相互独立相互引用是任何一种编程语言的基础能力.对于“模块”这个词在各种编程语言中或许是不同的,但我们可以简单认为一个程序文件是一个模块,文件里包含了类或者方法的定义.对于编译型的语言,比如C#中 ...

  3. Python Logging模块的简单使用

    前言 日志是非常重要的,最近有接触到这个,所以系统的看一下Python这个模块的用法.本文即为Logging模块的用法简介,主要参考文章为Python官方文档,链接见参考列表. 另外,Python的H ...

  4. Python标准模块--logging

    1 logging模块简介 logging模块是Python内置的标准模块,主要用于输出运行日志,可以设置输出日志的等级.日志保存路径.日志文件回滚等:相比print,具备如下优点: 可以通过设置不同 ...

  5. python基础-模块

    一.模块介绍                                                                                              ...

  6. python 安装模块

    python安装模块的方法很多,在此仅介绍一种,不需要安装其他附带的pip等,python安装完之后,配置环境变量,我由于中英文分号原因,环境变量始终没能配置成功汗. 1:下载模块的压缩文件解压到任意 ...

  7. python Queue模块

    先看一个很简单的例子 #coding:utf8 import Queue #queue是队列的意思 q=Queue.Queue(maxsize=10) #创建一个queue对象 for i in ra ...

  8. python logging模块可能会令人困惑的地方

    python logging模块主要是python提供的通用日志系统,使用的方法其实挺简单的,这块就不多介绍.下面主要会讲到在使用python logging模块的时候,涉及到多个python文件的调 ...

  9. Python引用模块和查找模块路径

    模块间相互独立相互引用是任何一种编程语言的基础能力.对于"模块"这个词在各种编程语言中或许是不同的,但我们可以简单认为一个程序文件是一个模块,文件里包含了类或者方法的定义.对于编译 ...

  10. Python Paramiko模块与MySQL数据库操作

    Paramiko模块批量管理:通过调用ssh协议进行远程机器的批量命令执行. 要使用paramiko模块那就必须先安装这个第三方模块,仅需要在本地上安装相应的软件(python以及PyCrypto), ...

随机推荐

  1. js中的事件轮询(event loop)机制

    异步任务指的是,不进入主线程.而进入"任务队列"(task queue)的任务,只有"任务队列"通知主线程,某个异步任务可以执行了,该任务才会进入主线程执行. ...

  2. CloudStack和OpenStack该如何选择(如果准备选择OpenStack,请做好hack的准备。CloudStack的底层功能已经做的很完善了,更适合商用)

    国内做云计算的目前基本会在OpenStack和CloudStack中做一个选择.CloudStack 和OpenStack选哪一个,要根据自己的业务模式和研发力量来定. 作者:来源:cloudstac ...

  3. tensorflow入门笔记(三) tf.GraphKeys

    tf.GraphKeys类存放了图集用到的标准名称. 该标准库使用各种已知的名称收集和检索图中相关的值.例如,tf.Optimizer子类在没有明确指定待优化变量的情况下默认优化被收集到tf.Grap ...

  4. C# cmd bcp 导出数据

    背景需求:应用系统间数据自动同步处理,要求高效无人工干预 技术实现:C#启动cmd,通过BCP命令传入必要参数,实现数据导出 /// <summary> /// cmd下,启动应用程序命令 ...

  5. document数据路由

    (1)document数据路由的理解:我们知道,一个index的数据会被分为多片,每片都在一个shard中,所以说,一个document,只能存在于一个shard中.当客户端创建document的时候 ...

  6. 什么是Docker?(一)

    Docker 最初是 dotCloud 公司创始人 Solomon Hykes 在法国期间发起的一个公司内部项目,它是基于 dotCloud 公司多年云服务技术的一次革新,并于 2013 年 3 月以 ...

  7. 【JMeter】【接口测试】csv参数化,数据驱动,自动化测试

    csv参数化,数据驱动   首先我们要有一个接口测试用例存放的地方,我们这里用EXCEL模板管理,里面包含用例编号.入参.优先级.请求方式.url等等. 1:新建一个txt文件,命名为sjqd,后缀名 ...

  8. cxListView和dbgrid联动

    procedure TForm1.FormCreate(Sender: TObject); begin ClientDataSet1.First; while not ClientDataSet1.E ...

  9. Win7各版本功能对比

  10. abp中linq的应用

    private IQueryable<MembershipEntity> SelectOrScrrenMember(GetMemberInput input) { string[] use ...