python解释器查找module进行加载的时候,查找的目录是存放在sys.path变量中的,sys.path变量中包含文件的当前目录。如果你想使用一个存放在其他目录的脚本,或者是其他系统的脚本,你可以将这些脚本制作成一个安装包,然后安装到本地,安装的目录就是sys.path中的一个。这样你就可以在任何想要使用module的地方,直接使用import导入就可以了。

用setup安装自定义模块:

打包module需要新建一个setup.py脚本,然后在脚本中输入下面的内容,假设你的需要打包的module的文件名是meal.py。

from distutils.core import setup 

setup(name = 'meal',
version = '1.0',
py_modules = ['meal'],
)

在终端(windows的话,则是打开cmd)中输入

python setup.py sdist

你会发现在目录中多出一个文件夹dist,进入这个文件夹,会发现一个meal-1.0.tar.gz文件(windows的话,是meal-1.0.zip文件)。将这个压缩文件解压,进入解压的目录,执行下面的命令

python setup.py install

  

   安装正确,会显示安装的目录(C:\Python27\Lib\site-packages)。
   接下来,你就可以在脚本中直接使用这个module了。当然了,使用之前,还是需要导入的。
import meal 

help(meal)

用setup安装自定义包

自定义包的层级结构:

src中__init__.py内容

# -*- coding: utf-8 -*-

  

macpy中__init__.py内容

# -*- coding: UTF-8 -*-

from __future__ import absolute_import

from .Mac import *

__version__ = '1.0.3'
__license__ = 'MIT'

setup内容

# -*- coding: utf-8 -*-
from distutils.core import setup
from setuptools import find_packages setup(name = 'mac.py',
version = '1.0.3',
description = 'A python lib to search Manufacturer of mac address',
long_description = '',
author = 'hustcc',
author_email = 'i@hust.cc',
url = 'https://github.com/hustcc/mac.py',
license = 'MIT',
install_requires = [],
classifiers = [
'Intended Audience :: Developers',
'Operating System :: OS Independent',
'Natural Language :: Chinese (Simplified)',
'Programming Language :: Python',
'Programming Language :: Python :: 2',
'Programming Language :: Python :: 2.5',
'Programming Language :: Python :: 2.6',
'Programming Language :: Python :: 2.7',
'Programming Language :: Python :: 3',
'Programming Language :: Python :: 3.2',
'Programming Language :: Python :: 3.3',
'Programming Language :: Python :: 3.4',
'Programming Language :: Python :: 3.5',
'Topic :: Utilities'
],
keywords = 'mac.py,mac address,mac Manufacturer',
packages = find_packages('src'),
package_dir = {'':'src'},
include_package_data = True,
package_data = {'src':['macpy/oui_3.dict', 'macpy/oui_3.dict']}
)

setup函数还有一些参数:

1、packages
告诉Distutils需要处理那些包(包含__init__.py的文件夹)
2、package_dir
告诉Distutils哪些目录下的文件被映射到哪个源码包。一个例子:package_dir = {'': 'lib'},表示“root package”中的模块都在lib目录中。
3、ext_modules
是一个包含Extension实例的列表,Extension的定义也有一些参数。
4、ext_package
定义extension的相对路径
5、requires
定义依赖哪些模块
6、provides
定义可以为哪些模块提供依赖
7、scripts
指定python源码文件,可以从命令行执行。在安装时指定--install-script
8、package_data
通常包含与包实现相关的一些数据文件或类似于readme的文件。如果没有提供模板,会被添加到MANIFEST文件中。
9、data_files
指定其他的一些文件(如配置文件)

【python】用setup安装自定义模块和包的更多相关文章

  1. python3.4学习笔记(八) Python第三方库安装与使用,包管理工具解惑

    python3.4学习笔记(八) Python第三方库安装与使用,包管理工具解惑 许多人在安装Python第三方库的时候, 经常会为一个问题困扰:到底应该下载什么格式的文件?当我们点开下载页时, 一般 ...

  2. python使用pip安装第三方模块遇到的问题及解决方法

    python使用pip安装第三方模块遇到的问题及解决方法 关注公众号"轻松学编程"了解更多. 使用国内源: 清华:https://pypi.tuna.tsinghua.edu.cn ...

  3. what's the python之自定义模块和包

    模块自定义 上节说了有关模块的知识,当时所说的模块都是内置模块,现在来看自己定制的模块,即模块也可以自定义. 模块的自定义就是指写一段python文件,一般情况下里面包含了可执行的语句和函数的定义,其 ...

  4. python导入自定义模块和包

    参考资料 https://blog.csdn.net/gvfdbdf/article/details/52084144 http://www.runoob.com/python/python-modu ...

  5. python基础教程总结9——模块,包,标准库

    1. 模块 在python中一个文件可以被看成一个独立模块,而包对应着文件夹,模块把python代码分成一些有组织的代码段,通过导入的方式实现代码重用. 1.1 模块搜索路径 导入模块时,是按照sys ...

  6. python 使用pip安装第三方模块

    part 1:使用方法: 1.pip install somePackage picture 1 2.pip show somePackage 例如:pip show pip 弹出关于该模块的信息 p ...

  7. python学习第十三天 -模块和包

    模块和包 大家都知道,在计算机程序开发的过程中,随着程序代码越写越多,这样代码就会越不容易维护. 有时候为了好维护代码,把不同功能的函数放到不同的xx.py文件中. 在python中,一个.py文件就 ...

  8. python基础8之自定义模块、if __name__==__main__:解释

    一.自定义模块与使用 python模块说明:类似于函数式编程和面向过程编程,函数式编程则完成一个功能,其他代码用来调用即可,提供了代码的重用性和代码间的耦合.而对于一个复杂的功能来,可能需要多个函数才 ...

  9. Python学习(十一) —— 模块和包

    一.模块 一个模块就是一个包含了python定义和声名的文件,文件名就是模块名加上.py后缀. import加载的模块分为四个通用类别: 1.使用python编写的代码(.py文件) 2.已被编译为共 ...

随机推荐

  1. difference between forward and sendredirect

    Difference between SendRedirect and forward is one of classical interview questions asked during jav ...

  2. Redis 无法正常关闭服务

    前置知识:Redis最简单的基本命令: 1. 系统终端 ./redis-server 启动redis服务 ./redis-cli 启动redis客户端 ./redis-cli shutdown 关闭r ...

  3. Nginx配置指定媒体类型文件强制下载

    由于业务需要,在点击显示链接(如www.xxx.com/2015-01-15/xxx.png)显示媒体资源(如图片.视频.音频.文档),而在点击下载链接(如www.xxx.com/2015-01-15 ...

  4. 实现TabelView的多个cell布局

    - (void)viewDidLoad { [super viewDidLoad]; self.LabelArray=[[NSMutableArray alloc]initWithObjects:@& ...

  5. Linux系统启动错误 contains a file system with errors, check forced解决方法

    /dev/sda1 contains a file system with errors, check forced./dev/sda1: Inodes that were part of a cor ...

  6. 在Unity中创建可远程加载的.unity3d包

    在一个Unity项目中,发布包本身不一定要包括所有的Asset(译为资产或组件),其它的部分可以单独发布为.unity3d,再由程序从本地/远程加载执行,这部分不在本文讨论范围.虽然Unity并没有直 ...

  7. apache安全配置---禁止访问特定文件,防止日志、压缩包被下载

    指定禁止访问 某些后缀的文件 修改apache配置httpd.conf,在最后加上配置后,重启apache <Files ~ ".txt|.log|.zip|.gz|.sql" ...

  8. 【JavaScript忍者秘籍】

  9. C++中的new与delete

    C++中对象数组创建时,主要注意的点有:虚函数和带参数的构造函数,当出现虚函数时,对象数组中如通过父对象指向子对象,因为需要做Slice,析构时会造成指针错误引发内存泄露.测试程序如下: class ...

  10. Localization要从第一天开始计划

    最近E3,微软说可以在任何region玩任何语言的游戏了.换一个语言么,听起来没有那么复杂,其实操作起来还得是从软件工程初期就好好计划. Windows在很长一段时间,你安装完了,就不能换语言了.大学 ...