为啥要提交到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这个目录,其他文件一个都不可以少。

  1. COPYING.txt 就是授权文件,里面是你关于这个包的授权,比如:MIT license,那么你里面放入MIT License全文即可,当然,你完全可以不要这个文件。
  2. README.txt,尽量放些东西在这里,后面我们可能会用到它的。需要注意的是,Windows的回车和Linux不一样,所以建议用Windows。另外你也可以使用README.rst这类文件代替
  3. setup.py,核心文件,这里面的内容马上我们会讲。
  4. docs/,这个文件夹你放你的documents吧,不过要用心写文档真是个难事,所以这个文件夹基本是不存在的——为自己的懒惰可耻一把。
  5. 如果的包整个就一个文件,那么你也完全可以不用考虑再建一层目录了,直接放到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社区的更多相关文章

  1. 将python包发布到PyPI和制作whl文件

    参考链接:wheel和egg的不同怎样将自己写的包传达到PyPi发布你自己的轮子 - PyPI打包上传实践PyPI官网上传包教程 wheel文件Wheel和Egg都是python的打包格式,目的是支持 ...

  2. 实战教程:如何将自己的Python包发布到PyPI上

    1. PyPi的用途 Python中我们经常会用到第三方的包,默认情况下,用到的第三方工具包基本都是从Pypi.org里面下载. 我们举个栗子: 如果你希望用Python实现一个金融量化分析工具,目前 ...

  3. 【Python实战02】共享Python代码到PyPI社区

    之前学习了Python的列表,以及编写了一个函数来进行列表的输出,这次我们就继续来学习如何把我们已经编写好的代码共享到PyPI社区,这里以上篇文章中编写的print_lol函数为例. 函数转换为模块 ...

  4. Python 第三方包上传至 PyPI 服务器

    PyPI 服务器主要功能是?PyPI 服务器怎么搭建? PyPI 服务器可以用来管理自己开发的 Python 第三包. Pypi服务器搭建 Python 第三方包在本地打包 # 本地目录执行以下命令应 ...

  5. Python开源框架

    info:更多Django信息url:https://www.oschina.net/p/djangodetail: Django 是 Python 编程语言驱动的一个开源模型-视图-控制器(MVC) ...

  6. 想拥有自己的Python程序包,你只需15步

    来源商业新知网,原标题:15步,你就能拥有自己的Python程序包 全文共 3192 字,预计学习时长 6 分钟 每个软件开发员和数据科学家都难免要做程序包.本文推荐一篇 Python开源程序包的制作 ...

  7. 机器学习 Top 20 Python 开源项目

    转自:http://mp.weixin.qq.com/s?__biz=MzA4MjEyNTA5Mw==&mid=2652565022&idx=1&sn=9aa035097120 ...

  8. python库包大全(转)

    python 库资源大全 转自: Python 资源大全中文版 环境管理 管理 Python 版本和环境的工具 p:非常简单的交互式 python 版本管理工具.官网 pyenv:简单的 Python ...

  9. Github上的python开源项目

    Python开源项目,期待大家和我们一起共同维护 github排名榜单 https://github.com/trending github搜索榜单:https://github.com/search ...

随机推荐

  1. wordpress学习一: 环境搭建

    原来想单独找个linux的机器搞套完整的环境,机器都找好了,环境搞了半天.搞完后,感觉环境什么的不重要,核心是学好php和wordpress,单独的环境维护还开发成本都不小,所以 还是采用 xampp ...

  2. springMVC找不到JS等文件

     应用springMVC时 JS等文件找不到错误 应用springMVC时如果配置URL映射时如下配置 <servlet>        <servlet-name>appSe ...

  3. ThreadLocal实现session中用户信息 的线程间共享(精)

    ThreadLocal并不难理解,我总结的最简单的理解就是: ThreadLocal像其它变量一样(局部.全局.静态)也是一种变量类型,只是他是线程变量,更直白的说他是一种变量作用域,即他的作用域是当 ...

  4. JBoss7配置指南

    JBoss7配置指南   1.    jboss各主要版本特性... 3 1.1.     jboss4特性... 3 1.2.     jboss5特性... 5 1.3.     jboss6特性 ...

  5. Ajax动态滚动加载数据

    看新浪微博,人人网都有这样的效果:滚动条滚动到最下面的时候,新的数据就被自动加载出来了,今天亲自尝试了一下这个效果的实现. 最开始在CSDN上写了一版,功能比较简单,今天又增加了一个小功能:翻页到指定 ...

  6. linux 命令案例学习——文件搜索

    两个搜索文件的工具 locate  ——仅仅通过文件名查找文件 find     ——依据文件的各种属性在既定目录(包括子目录)里查找 一个通常与文件搜索命令一起使用.处理搜索结果文件列表的命令 xa ...

  7. android 从服务器上获取APK下载安装

    简单的为新手做个分享.  网上有些资料,不过都是很零散,或是很乱的,有的人说看不懂. 一直有新手说 做到服务器更新APK时没有思路,这里做个简单的分享,希望有不同思路的可以讨论.  下面做个很简单的读 ...

  8. AbsListView.OnScrollListener 使用注意事项

    这个类没什么特别的,但是使用的时候我确出错了 abstract void onScroll(AbsListView view, int firstVisibleItem, int visibleIte ...

  9. eclipse中启动tomcat报错 java.lang.ClassNotFoundException

    之前启动还好好的,某次启动tomcat就莫名其妙的报了这个java.lang.ClassNotFoundException的错.   检查maven依赖包,发现这个类是存在的. 然后一通clean操作 ...

  10. mtk android lcm调试

    参考MTK 文档LCM_Customer_document_MT6575.pdf The following shows the steps to add a new LCM driver: (1)  ...