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

给自定义第三方包打包

自定义第三方包目录结构

--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\
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容