给自定义第三方包打包
自定义第三方包目录结构
--src
|--foo
|--foo.py
|--__init__.py
--setup.py
foo.py内容如下:
# -*- coding:utf-8 -*-
'''
foo module for test
'''
class Foo:
def __init__(self):
return
def bar(self, x):
return x + 1
__init__.py中列出了from foo import *对应的模块列表:
all = ["foo"]
setup.py文件的编写
参考python自定义模块构建、发布及安装和关于python中的setup.py
示例如下:
# -*- coding:utf-8 -*-
from distutils.core import setup
from setuptools import find_packages
setup(name = 'foo',
version = '0.1',
packages = find_packages(where='./src/'), # 查找包的路径
package_dir = {'':'src'}, # 包的root路径映射到的实际路径
include_package_data = False,
package_data = {'data':[]},
description = 'A python lib for test',
long_description = '',
author = 'test',
author_email = 'test@me.com',
url = 'https://github.com/test/foo', # homepage
license = 'MIT',
install_requires = [],
)
打包
执行如下命令,会在setup.py所在目录下生成dist/foo-0.1.tar.gz的打包文件,同时还会生成src/foo.egg-info文件夹
$ python setup.py sdist
安装
推荐用pip安装,因为pip是easy_install的替代品,相比python setup.py install增加了自动安装依赖包的功能。
安装命令如下:
pip install foo -f dist/foo-0.1.tar.gz --no-cache-dir
在linux下执行此命令,会安装到~/.local/lib/python2.7/site-packages/foo/, 目录结构如下:
--foo
|--foo.py
|--__init__.py
调用
import foo.foo
f = foo.foo.Foo()
f.bar(1)
注意
- pip是有缓存的,存放位置在~/.cache/pip/下面,如果你修改了第三方安装包,安装时需增加'--no-cache-dir'选项:
pip install foo -f dist/foo-0.1.tar.gz --no-cache-dir
或者在安装前用下面的命令清除缓存
rm -rf ~/.cache/pip/
否则安装上的还是旧版本的包
其他操作系统的缓存路径:
Mac OS X: ~/Library/Caches/<AppName>
*nix: ~/.cache/<AppName> (XDG default)
Windows: C:\Users\<username>\AppData\Local\