paulwinflo

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
指定其他的一些文件(如配置文件)

 

分类:

技术点:

相关文章: