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