python如何发布自已pip项目
前言
因为自已平时会把一个常用到逻辑写成一个工具python脚本,像关于时间字符串处理,像关于路径和文件夹遍历什么的工具。每一次新建一个项目的时候都要把这些工具程序复制到每个项目中,换一个电脑后还要从github生新下载后再复制到项目中,实在太麻烦。最后想想,还是建一个自已的pip项目会比较好。

第一步:注册一个PyPi帐号
PyPi注册网站

在上边的注册网站上注册一个自已的帐号,注册好后在邮箱激活,一般注册流程都是这么操作了,这里就不多说了。

第二步:在github上创建一个项目
如果你还没有使用过github源码托管网站,可以先注册一个github的帐户再创建项目,我一般创建项目用的是官网提供的桌面工具Github Desktop.

Github Desktop的下载地址:https://desktop.github.com

github注册和创建新项目,这里也不说了,程序员的基本功。

第三步:编写自已的python项目
我这里只有一个timetool.py和pathtool.py两个文件
祥情可以查看我的示例项目:
https://github.com/fengmm521/pipProject

先建一个目录,比如magetool,这个里边放的是你的项目代码

在这个magetool目录里,新建一个__init__.py,这个文件里可以什么都不用写,然后就是你要发布的.py文件

第四步:编写setup.py文件
这里重点说明一下这个setup.py文件,因为整个pip项目的发布和上传都是基于这个setup.py文件完成的。

大家可以看一下我示例项目的setup.py是怎么写的,其实我也是从网上下载别人写好的。

#!/usr/bin/env python
#-*- coding:utf-8 -*-

#############################################
# File Name: setup.py
# Author: mage
# Mail: mage@woodcol.com
# Created Time: 2018-1-23 19:17:34
#############################################

from setuptools import setup, find_packages

setup(
name = "magetool",
version = "0.1.0",
keywords = ("pip", "pathtool","timetool", "magetool", "mage"),
description = "time and path tool",
long_description = "time and path tool",
license = "MIT Licence",

url = "https://github.com/fengmm521/pipProject",
author = "mage",
author_email = "mage@woodcol.com",

packages = find_packages(),
include_package_data = True,
platforms = "any",
install_requires = []
)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
setup.py中重要的参数有5个:

1.name
name = “magetool”,这个name参数后边的就是你的项目代码所在目录,也是你pip要上传的项目名称,其他人用pip install xxx来安装时,后边的xxx就是你的这个magetool

2.version
version = “0.1.0”,你工具的版本号,后期你工具更新了,要用pip来更新包的时候,会更新比当前版本号高的新版本。

下边是pip 更新包的命令

pip install --upgrade <包的名字>
pip install -U <包的名字>
1
2
3.packages
packages = find_packages(),这个参数是导入目录下的所有__init__.py包

4.install_requires
install_requires = [],这是一个数组,里边包含的是咱的pip项目引用到的第三方库,如果你的项目有用到第三方库,要在这里添上第三方库的包名,如果用的第三方版本不是最新版本,还要有版本号。

第五步:打包自已的项目
在代码编写完成,自已测试后没有问题了,就可以打包了。
打包使用下边两个命令:

我使用的是第二个

$ python setup.py bdist_egg # 生成类似 edssdk-0.0.1-py2.7.egg,支持 easy_install
$ python setup.py sdist # 生成类似 edssdk-0.0.1.tar.gz,支持 pip
1
2
两个命令打包好之后都会生成build和dist两个目录,打包的文件会放在dist目录下,供后边上传到PyPi服务器

第六步:上传到PyPi服务器
在上传前,要建一个文件,$HOME/.pypirc,$HOME目录在linux或者mac系统下就是~/目录。在这里建一个.pypirc文件。里边的内容如下:

[distutils]
index-servers = pypi

[pypi]
username:你的PyPi用户名
password:你的PyPi密码
~
1
2
3
4
5
6
7
因为不能使用python setup.py register进行上传,使用这个上传会报一个410的错误。所以要使用.pypirc文件保存你的PyPi用户信息,这时使用下载的twine就可以直接上传了。

在别的地方找到的有说上传用python setup.py sdist upload命令,但在我这里用这个命令也会一直失败,所以我用下边的命令上传打包好的pip项目,我上传的是用第五步的,python setup.py sdist命令打包好的项目,

上传好打包的pip安装包:

twine upload dist/magetool-0.1.0.tar.gz
1
第七步:使用pip安装刚刚上传的包
pip安装包我这里就不多说了,这个一般用python的都会的

用pip安装上传的包:

pip install magetool --user
1
–user参数的意思是安装给当电脑的当前用户,要不然会要求系统管理员权限才能安装。加了–user之后就不用sudo的管理员权限了。

————————————————
版权声明:本文为CSDN博主「woodcol」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/fengmm521/article/details/79144407

python如何发布自已pip项目的更多相关文章

  1. python打包发布自己的pip项目

    原文链接:https://blog.csdn.net/Liangjun_Feng/article/details/80037315 一.注册pypi账号 网址:https://pypi.org/ 直接 ...

  2. Python 官方团队在打包项目中踩过的坑

    花下猫语:这是 packaging 系列的第三篇译文,该系列是全网关于此话题的最详尽(水平也很高)的一个系列.原作者是 Python 官方打包团队成员,是 virtualenv 和 tox 项目的维护 ...

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

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

  4. Python:渗透测试开源项目

    Python:渗透测试开源项目[源码值得精读] sql注入工具:sqlmap DNS安全监测:DNSRecon 暴力破解测试工具:patator XSS漏洞利用工具:XSSer Web服务器压力测试工 ...

  5. python入门:python包管理工具pip的安装

    pip 是一个安装和管理 Python 包的工具 , 是 easy_install 的一个替换品. distribute是setuptools的取代(Setuptools包后期不再维护了),pip是e ...

  6. jenkins结合supervisor进行python程序发布后的自动重启

    jenkins结合supervisor进行python程序发布后的自动重启 项目背景: 通过jenkins发布kvaccount.chinasoft.com站点的python服务端程序,业务部门同事需 ...

  7. 打造完美Python环境(pyenv, virtualenv, pip)

    写在最前 在使用 Python 进行开发和部署的时候,经常会碰到Python版本或者依赖包或者对应版本不同导致各种意外情况发生. 本文将介绍如何通过 pyenv, virtualenv, pip三个工 ...

  8. python生成requirements.txt 导出项目依赖

    使用pip freeze $ pip freeze > requirements.txt 这种方式是把整个环境中的包都列出来了,如果是虚拟环境可以使用. 通常情况下我们只需要导出当前项目的req ...

  9. [转]使用Gradle发布Android开源项目到JCenter

      转自:http://blog.csdn.net/maosidiaoxian/article/details/43148643 使用Gradle发布Android开源项目到JCenter 分类: G ...

随机推荐

  1. C# 调用 python3

    1.C# 调用python 本质上是使用命令行运行python 1.1 C# 使用命令行 program.cs using System; using System.Diagnostics; usin ...

  2. 云计算下的企业IT运维

    云计算管理员们一般都工作在一个分布式局域网计算基础设施中,它与传统数据中心最大的区别之一就是,所有被存储.调配和管理的数据都在一个私有云中.基于云计算的高效工作负载监控可在性能发生问题之前就提前发现这 ...

  3. DevExpress Winforms使用大揭秘!那些你不了解的SvgImageBox控件

    DevExpress Winforms Controls 内置140多个UI控件和库,完美构建流畅.美观且易于使用的应用程序.无论是Office风格的界面,还是分析处理大批量的业务数据,DevExpr ...

  4. VS 项目清理小工具 ClearSolution

    简介 VS项目清理小工具,通过INI配置文件快速清理项目,清除无用的数据库等文件与文件夹,简单实用. 支持平台 Windows 开源许可 ClearSolution 遵循 [Apache 协议],使用 ...

  5. string::at

    char& at (size_t pos); const char& at (size_t pos) const; #include <string>#include &l ...

  6. 慕课网SSMOA办公系统

    目录 需求分析 1 用例图 系统设计 包及全局配置 数据库设计 工具类 具体功能实现 1 dao层功能实现 2 编码过滤器及登陆拦截器 3 单元测试 遇到的问题总结 1 新建一个Modul不会打开新页 ...

  7. 015_使用 expect 工具自动交互密码远程其他主机安装 httpd 软件

    #!/bin/bash#删除~/.ssh/known_hosts 后,ssh 远程任何主机都会询问是否确认要连接该主机rm -rf ~/.ssh/known_hostsexpect <<E ...

  8. Selenium执行cdp命令,driver.execute_cdp_cmd用法

    Chrome自带的开发者工具DevTools功能非常强大.有时候我们在使用Selenium操作浏览器时需要通过调用一下DevTools的方法来完成一些设置,如模拟移动设备,弱网模拟等等. Seleni ...

  9. 学院管理系统(mysql版)

    需求 用户角色,讲师\学员, 用户登陆后根据角色不同,能做的事情不同,分别如下 讲师视图 管理班级,可创建班级,根据学员qq号把学员加入班级 可创建指定班级的上课纪录,注意一节上课纪录对应多条学员的上 ...

  10. JavaWeb_(Spring框架)Spring与JDBC

    一.用Spring中的JdbcTemplate操作数据库 在MySQL中准备一个user表,表中增加一条假数据 用Spring中的JdbcTemplate操作数据库,在JdbcTemplate中实现增 ...