python

python自定义第三方包的打包和安装

2017-05-03  本文已影响863人  wumingkeqi

给自定义第三方包打包

自定义第三方包目录结构

--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 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\
上一篇 下一篇

猜你喜欢

热点阅读