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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM