python开源包提交到pypi社区
为啥要提交到pypi?因为提交成功后,你今后想用你自己写的模块,只要pip install一下就可以了。
那么如何提交?请参看本篇教程
首先要确定你的包叫啥名,比如我的包叫xlutils3,既然确定了,那么就创建该名称的文件夹,然后把源码放到文件夹中,然后检查文件夹内部的文件里的每个导入库是否写对路径,比如xlutils.copy就得改成xlutils3.copy
然后就是在文件夹下创建一个__init__.py文件,内容可以全部为空,整理成包的文件结构大概像下面这样:
xlutils3/
|
+-- __init__.py
|
+-- myscripts1.py
|
+-- mysscripts2.py
|
+-- mymorescripts.py
|
xlutils3就是包的名称,下面my***.py的各种文件就是原有的各种代码模块。
这个包如果不上传到pypi,纯粹本地用已经完全没问题。
所以你要检查内部一些方法函数的话可以import然后调用方法检查一下
如果要打包到PyPI上,那么就需要在上面的基础上,在加点料。首先,需要调整下文件的目录结构,把上面的改成下面这个样子:
xlutils3/
|
+-- xlutils3/
. |
. +-- __init__.py
. |
. +-- myscripts1.py
. |
. +-- mysscripts2.py
. |
. +-- mymorescripts.py
. |
|
就是把原先的xlutils3文件夹放到另一个xlutils3文件夹下,然后在最上层的文件夹中创建一些文件:
xlutils3
|
+-- COPYING.txt
|
+-- README.txt
|
+-- setup.py
|
+-- xlutils3
. |
. +-- __init__.py
. |
. +-- myscripts1.py
. |
. +-- mysscripts2.py
. |
. +-- mymorescripts.py
. |
+-- docs/
|
除了docs这个目录,其他文件一个都不可以少。
- COPYING.txt 就是授权文件,里面是你关于这个包的授权,比如:MIT license,那么你里面放入MIT License全文即可,当然,你完全可以不要这个文件。
- README.txt,尽量放些东西在这里,后面我们可能会用到它的。需要注意的是,Windows的回车和Linux不一样,所以建议用Windows。另外你也可以使用
README.rst这类文件代替 - setup.py,核心文件,这里面的内容马上我们会讲。
- docs/,这个文件夹你放你的documents吧,不过要用心写文档真是个难事,所以这个文件夹基本是不存在的——为自己的懒惰可耻一把。
- 如果的包整个就一个文件,那么你也完全可以不用考虑再建一层目录了,直接放到README文件所在目录下就可以了,虽然我不建议这么操作。
setup.py示例文件如下,不多说了,提交前请把中文注释删除
import codecs
import os
import sys
try:
from setuptools import setup
except:
from distutils.core import setup
"""
打包的用的setup必须引入,
"""
def read(fname):
"""
定义一个read方法,用来读取目录下的长描述
我们一般是将README文件中的内容读取出来作为长描述,这个会在PyPI中你这个包的页面上展现出来,
你也可以不用这个方法,自己手动写内容即可,
PyPI上支持.rst格式的文件。暂不支持.md格式的文件,<BR>.rst文件PyPI会自动把它转为HTML形式显示在你包的信息页面上。
"""
return codecs.open(os.path.join(os.path.dirname(__file__), fname)).read()
NAME = "somefunctions"
"""
名字,一般放你包的名字即可
"""
PACKAGES = ["somefunctions",]
"""
包含的包,可以多个,这是一个列表
"""
DESCRIPTION = "this is a test package for packing python liberaries tutorial."
"""
关于这个包的描述
"""
LONG_DESCRIPTION = read("README.rst")
"""
参见read方法说明
"""
KEYWORDS = "test python package"
"""
关于当前包的一些关键字,方便PyPI进行分类。
"""
AUTHOR = "MitchellChu"
"""
谁是这个包的作者,写谁的名字吧
我是MitchellChu,自然这里写的是MitchellChu
"""
AUTHOR_EMAIL = "youremail@email.com"
"""
作者的邮件地址
"""
URL = "http://blog.useasp.net/"
"""
你这个包的项目地址,如果有,给一个吧,没有你直接填写在PyPI你这个包的地址也是可以的
"""
VERSION = "1.0.1"
"""
当前包的版本,这个按你自己需要的版本控制方式来
"""
LICENSE = "MIT"
"""
授权方式,我喜欢的是MIT的方式,你可以换成其他方式
"""
setup(
name = NAME,
version = VERSION,
description = DESCRIPTION,
long_description = LONG_DESCRIPTION,
classifiers = [
'License :: OSI Approved :: MIT License',
'Programming Language :: Python',
'Intended Audience :: Developers',
'Operating System :: OS Independent',
],
keywords = KEYWORDS,
author = AUTHOR,
author_email = AUTHOR_EMAIL,
url = URL,
license = LICENSE,
packages = PACKAGES,
include_package_data=True,
zip_safe=True,
)
## 把上面的变量填入了一个setup()中即可。
值得注意的是classifiers 不可以乱写,否则会导致上传失败
一般情况下,Distutils只会包含你包文件夹内的:README.txt,setup.py,packages里面定义的所有某块的.py文件,py_modules参数包含的所有.py文件,其他文件需要被包含进来,需要单独添加。需要添加,你可以在根目录添加一个MANIFEST.in文件,将要包含的文件放入,具体规则请参考官方文档格式。如我们这里需要添加COPYING.txt可以在MANIFEST.in中添加如下行:include COPYING.txt
写完之后为了检查,可以在命令行里cd到文件的setup.py所在的目录输入python setup.py check
一般有异常的话都是你setup.py文件没写对
没有异常输出的话就可以打包:python setup.py sdist
打包后可以上传,但建议先把包拿到其他未装过包的地方安装运行一遍
没问题的话可以直接进行:去pypi注册一个账号,然后命令行里输入python setup.py register sdist upload
running register
We need to know who you are, so please choose either:
1. use your existing login,
2. register as a new user,
3. have the server generate a new password for you (and email it to you), or
4. quit
Your selection [default 1]: 1
一般都会报错,所以我建议在setup.py的同目录下放上账号文件,账号文件名为.pypirc,内容如下:
[pypi] repository = https://pypi.python.org/pypi [server-login] username:slqt password:【你的密码】
记得windows下写的文档,开头会有讨厌的BOM!解决办法有两种:
1、用editplus的十六进制编辑器删掉BOM
2、在linux里建立好文件后拖到windows下,然后换行处理
然后重新执行python setup.py sdist以及后续的操作,上传ok后可以去页面看一下,然后卸载本地的,然后pip install测试下
以下就是我发布的包的地址https://pypi.python.org/pypi/xlutils3
python开源包提交到pypi社区的更多相关文章
- 将python包发布到PyPI和制作whl文件
参考链接:wheel和egg的不同怎样将自己写的包传达到PyPi发布你自己的轮子 - PyPI打包上传实践PyPI官网上传包教程 wheel文件Wheel和Egg都是python的打包格式,目的是支持 ...
- 实战教程:如何将自己的Python包发布到PyPI上
1. PyPi的用途 Python中我们经常会用到第三方的包,默认情况下,用到的第三方工具包基本都是从Pypi.org里面下载. 我们举个栗子: 如果你希望用Python实现一个金融量化分析工具,目前 ...
- 【Python实战02】共享Python代码到PyPI社区
之前学习了Python的列表,以及编写了一个函数来进行列表的输出,这次我们就继续来学习如何把我们已经编写好的代码共享到PyPI社区,这里以上篇文章中编写的print_lol函数为例. 函数转换为模块 ...
- Python 第三方包上传至 PyPI 服务器
PyPI 服务器主要功能是?PyPI 服务器怎么搭建? PyPI 服务器可以用来管理自己开发的 Python 第三包. Pypi服务器搭建 Python 第三方包在本地打包 # 本地目录执行以下命令应 ...
- Python开源框架
info:更多Django信息url:https://www.oschina.net/p/djangodetail: Django 是 Python 编程语言驱动的一个开源模型-视图-控制器(MVC) ...
- 想拥有自己的Python程序包,你只需15步
来源商业新知网,原标题:15步,你就能拥有自己的Python程序包 全文共 3192 字,预计学习时长 6 分钟 每个软件开发员和数据科学家都难免要做程序包.本文推荐一篇 Python开源程序包的制作 ...
- 机器学习 Top 20 Python 开源项目
转自:http://mp.weixin.qq.com/s?__biz=MzA4MjEyNTA5Mw==&mid=2652565022&idx=1&sn=9aa035097120 ...
- python库包大全(转)
python 库资源大全 转自: Python 资源大全中文版 环境管理 管理 Python 版本和环境的工具 p:非常简单的交互式 python 版本管理工具.官网 pyenv:简单的 Python ...
- Github上的python开源项目
Python开源项目,期待大家和我们一起共同维护 github排名榜单 https://github.com/trending github搜索榜单:https://github.com/search ...
随机推荐
- Wireshark 网络抓包工具Wireshark的使用
阅读目录 wireshark介绍 wireshark不能做的 wireshark VS Fiddler 同类的其他工具 什么人会用到wireshark wireshark 开始抓包 wireshark ...
- RestEasy简介
RestEasy简介 RestEasy技术说明 简介 RESTEasy RESTEasy是JBoss的一个开源项目,提供各种框架帮助你构建RESTful Web Services和RESTful Ja ...
- Java:IO流其他类(字节数组流、字符数组流、数据流、打印流、Properities、对象流、管道流、随机访问、序列流、字符串读写流)
一.字节数组流: 类 ByteArrayInputStream:在构造函数的时候,需要接受数据源,而且数据源是一个字节数组. 包含一个内部缓冲区,该缓冲区包含从流中读取的字节.内部计数器跟踪 read ...
- Session与Cookie
Session与Cookie的比较 Cookie与Session都可以进行会话跟踪,但是实现的原理不太一样.一般情况下二者均可以满足需求,但有时候不可以使用Cookie,有时候不可以使用Session ...
- oracle数据库sql的基本使用
整理了下关于oracle数据库中SQL的基本使用语句,整理如下,方便记忆. oracle的基本术语 数据字典,数据库元数据信息的数据字典表和用户可以读取的数据字典视图组成.存放oracle数据库所用的 ...
- NDK(1)配置ndk,含eclipse,Android Studio1.5.1
现在的ndk配置已经非常简单,如果看到要cygwin的请关闭. 1,Eclipse 添加ndk linux,mac ,windows 相似, a.下载 ndk并解压, b.在eclipse的andro ...
- java操作office和pdf文件页面列表导出cvs,excel、pdf报表.
在平常的开发中我们常常遇到不仅仅只是导出excel报表的情况.有时候也需要导出pdf或者CSV报 表.其实原理都差不多.刚开始本来不打算也这篇博客介绍这个的.感觉这篇博客和前面的博客有点雷同.原理基本 ...
- Html 修改placeholder的颜色属性css样式
项目需求需要修改文本框的placeholder 的文本颜色, 百度下, 备忘,我使用的是这种方法, ::-webkit-input-placeholder { /* WebKit browsers * ...
- oracle数据导入的常用命令
oracle 中数据库完全导入导出:cmd命令行模式 oracle数据库cmdfile数据库服务器constraints Oracle数据导入导出imp/exp就相当于oracle数据还原与备份.ex ...
- timer的使用
; private void timer1_Tick(object sender, EventArgs e) //定时执行事件 { button1.Text = i.ToString();//显示按钮 ...