• 【python】用setup安装自定义模块和包


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

  • 相关阅读:
    IOS AFN (第三方请求)
    IOS ASI (第三方请求)
    OC Copy and MutableCopy的使用
    OC NSMutableArray
    OC NSArray使用
    OC NSMutableString的使用
    OC 指向指针的指针
    OC Nsstring的使用
    Code First :使用Entity. Framework编程(4) ----转发 收藏
    Code First :使用Entity. Framework编程(3) ----转发 收藏
  • 原文地址:https://www.cnblogs.com/paulwinflo/p/5849817.html
Copyright © 2020-2023  润新知