美文网首页
pip包-自用

pip包-自用

作者: qizhen816 | 来源:发表于2020-03-02 17:15 被阅读0次

python包创建过程

  1. 包名创建一个文件夹,其中要包含一个init.py文件。(可以为空)
    如果目录中包含了init.py 时,当用 import 导入该目录时,会执行init.py 里面的代码。
    为方便调用包,最好在init.py 文件中直接编写实现模块功能的变量、函数和类。同时也可导入其他包。
    如果功能被设计分散到不同的模块中,则init.py可以为空文档。
    调用自定义包的内部其他模块的功能时,最好使用相对路径调用。

  2. 与包名同级编写setup.py
    对于一个需要被分发的包来说,其根目录包含一个 setup.py 脚本,它定义了 distutils 模块中描述的所有元数据,并将其合并为标准的 setup() 函数调用的参数。
    例子:

import setuptools

with open("README.md", "r") as fh:
    long_description = fh.read()

setuptools.setup(
    name="doug",
    version="0.0.1",
    author="Example Author",
    author_email="author@example.com",
    description="A small example package",
    long_description=long_description,
    long_description_content_type="text/markdown",
    url="https://github.com/pypa/sampleproject",
    # packages=setuptools.find_packages(),
    packages = ['doug', 'doug.core'],
    classifiers=[
        "Programming Language :: Python :: 3",
        "License :: OSI Approved :: MIT License",
        "Operating System :: OS Independent",
    ],
    python_requires='>=3.6',
)

其中,setup 接受的最重要的参数包括:

name:包的名称  
version:包的版本号,(额外技巧参考:http://c.biancheng.net/view/5494.html )  
descriptions:包含描述包的几句话。  
long_description:包含完整说明,可以使用 reStructuredText 格式。    
keywords:定义包的关键字列表。  
authors:作者的姓名或组织。  
author_email:联系人电子邮件地址。  
url:项目的 URL。  
license:许可证(GPL、LGPL等)  
packages:包中所有名称的列表,setuptools 提供了一个名为 find_packages 的小函数来计算它。  
namespace_packages:命令空间包的列表。  
分类器:  
( 目前PYPI共分了9 类,参考:https://pypi.org/classifiers/)  
开发状态(DevelopmentStatus)  
环境(Environment)  
框架(Framework)  
目标受众(IntendedAudience)  
许可证(License)  
自然语言(Natural Language)  
操作系统(Operating System)  
编程语言(Programming Language)  
话题(Topic)  

经测试,packages还是要自己写好目录和包含的子目录

  1. LICENSE文件
    MIT是一种简单许可证,在开源项目中广泛使用,本项目已包含。

  2. 管理依赖
    许多项目需要安装和(或)使用一些外部包。有两种方法提供依赖包:

第一种:在setup脚本中提供列表

from setuptools import setup
setup(
    name = 'some-package',
    install_requires=['falcon', 'requests', 'delorean']
    #...
)

第二种:使用 requirements.txt 文件来追踪包的依赖列表

import os
from setuptools import setup
def strip_comments(l):
    return l.split ('#', 1)[0].strip()
def reqs(*f):
    ls = [strip_comments(l) for l in open(os.path.join(os.getcwd(), *f)).readlines()]
    return list(filter(None, ls))
setup(
    name = 'some-package',
    install_requires = reqs('requirements.txt'),
    #...
)
  1. 构建包
    sdist命令创建源代码发行版
    python setup.py sdist
    生成的文件形式为举例:mypackage-0.1.1.tar.gz的打包文件包含与项目相同的结构
    bdist分发预构建的发行版
    python setup.py bdist
    会生成文件形式为wjtestpack-0.0.0.win-amd64.zip格式的压缩包,这个包里主要有site-packages的文件夹,和一些缓存字节码.pyc结尾的文件。
    wheels
    python setup.py bdist_wheel
    生成的文件为wjtestpack-0.0.0-py3-none-any.whl形式的文件 。

  2. 提交pypi
    提交到pypi公共平台
    如果想将自己的包提交到 https://pypi.python.org 供大家通过pip install xxx使用:
    注册 pypi ->
    提交自己的包python setup.py register bdist upload ->
    之后选择1,输入用户名、密码即可完成提交->
    安装pypi中自己提交的包pip install xxx

相关文章

网友评论

      本文标题:pip包-自用

      本文链接:https://www.haomeiwen.com/subject/jvlzqhtx.html