之前写了一个爬虫的包,主要是根据自己写爬虫的情况总结一下。

因为每次都要重复写一些代码,所以提炼出来,类似一个框架的样子吧。

开始是放在自己的项目里引用,但如果换了一个项目,就得重新拷一遍,很麻烦。

后面又学到了,放在site-package里面可以在自己的环境引用,但换一个环境也是不行的,于是想到放到pypi上面,可以直接pip install,就很方便。

   记录一下上传包的过程。

先上一个参考文章https://www.cnblogs.com/sting2me/p/6550897.html。这个比较详细,跟着这个做基本没什么问题。

一、准备好自己的模块

上图为文件结构,我将我的文件,spider和crawler放到了一个文件夹Elise里面,外面是setup.py

二、编写setup.py

 # encoding=utf-8
# date: 2019/4/3
__author__ = "Masako" from distutils.core import setup setup(
name='Elise', # 安装包名称, pip install用
version='0.1.6', # 版本,不可重复
author='Masako', # 作者
author_email='Masako@example.com', # 邮件
url='https://github.com/TitledPythonFile', # 代码地址
# py_modules=['spider', 'crawler', 'test'], # 使用模块列表打包
packages=['Elise'], # 使用文件夹(包)打包
license='GPL', # 协议
description='Simple multithreading spider', # 描述
long_description=open('README.rst').read(), # 说明, 一定是rst
install_requires=[
"requests==2.19.1", # 需要安装的依赖,列表,有的版本不支持,推荐使用requirement.txt
],
)

  setup.py是安装包的必要信息。参数含义见注释。

三、打包

  准备完成后打开命令行,执行 python setup.py sdist build

  因为我的文件不齐全,不规范,所以有很多警告。先不管。

  执行完毕后会出现两个文件夹build和dist。

四、上传pypi

安装 twine pip install twine

上传dist twine upload dist/* 。

  

需要输入账号密码,去pypi上注册一下就可以。

注意事项

1.注意名称和版本,名称只能取pypi上不存在的名称,就算这个项目是你自己注册的,名称也不能一样;版本不能重复,不然上传不上去的,也就是说每次上传都要改一个版本的。

  2.注意使用py_modules参数打包的时候,模块直接和setup.py放在同一文件夹,如下图

安装后py文件会直接在site-package列表里面。比如xmltodict就是这种打包方式。如下

      

  假设在这种打包下,引入spider.py文件中的Spider类,引入使用的是 from spider import Spider。

  而用我当前的打包方式,安装后效果如下

  这种打包下,我的spider,引入使用的时候是 from Elise.spider import Spider。

参考文档

    https://packaging.python.org/

造一个轮子然后安装到pypi上的更多相关文章

  1. dva的effect那么难用,自己造一个轮子吧

    背景 对于dva这个开发框架,国内从事react的前端工程师多半不会感到陌生,dva完善的开发体系和简单的api,让其被广泛运用到实际工作中.我所在的公司也是长期使用dva作为基础的开发框架,虽然好用 ...

  2. 「造个轮子」——cicada 设计一个配置模块

    前言 在前两次的 cicada 版本中其实还不支持读取配置文件,比如对端口.路由的配置. 因此我按照自己的想法创建了一个 issue ,也收集到了一些很不错的建议. 最终其实还是按照我之前的想法来做了 ...

  3. RPC基础以及造一个RPC的轮子需要注意些什么

    RPC基础以及造一个RPC的轮子需要注意些什么 前言 rpc即远程过程调用,是分布式系统常用的通信方法.远程可以是在一台机器上的不同进程或在不同一个机器上的不同进程.rpc更看重速度,像调用本地方法一 ...

  4. 关于“找不到附属汇编 Microsoft.VC90.CRT,上一个错误是 参照的汇编没有安装在系统上。”的解决

    关于“找不到附属汇编 Microsoft.VC90.CRT,上一个错误是 参照的汇编没有安装在系统上.”的解决 一个项目需要在Win系统用计划任务执行PHP,写了个批处理bat利用php-cgi.ex ...

  5. ios 给微信开发一个插件并安装到未越狱的手机上教程

    现来整体说一下思路,首先给越狱的手机开发一个插件并安装上去,然后去越狱手机上找到相应的动态库和对应的微信APP安装包,拷贝出来,然后重新签名,就可以安装到未越狱的手机上了 1.首先你的电脑需要安装th ...

  6. pypi上传库

    把程序打包上传到PyPi版本库中 转自 1 首先必须要按照以下文件结构 ├── douban │   ├── cli.py │   ├── douban.py │   ├── douban_token ...

  7. 将自己写的Python代码打包放到PyPI上

    如果是开源的Python代码,为了能够让大家更方便的使用,放到PyPI上也许是个非常不错的主意(PyPI:Python Package Index).刚开始我以为要将代码打包放到PyPI上是一件非常复 ...

  8. 如何将你自己的Python package发布到PyPI上

    零.前言 最近做了一个小工具,查询IP或者域名的归属地.做完之后想发布到PyPI上,这样大家就可以通过pip来安装了. 在发布的过程中遇到了一些问题,也学到了很多东西.记录到这篇文章中.希望对大家有所 ...

  9. Asp.net Mvc 请求是如何到达 MvcHandler的——UrlRoutingModule、MvcRouteHandler分析,并造个轮子

    这个是转载自:http://www.cnblogs.com/keyindex/archive/2012/08/11/2634005.html(那个比较容易忘记,希望博主不要生气的) 前言 本文假定读者 ...

随机推荐

  1. CentOS7通过 yum安装路径查询方法

    CentOS7通过 yum安装路径查询方法 rpm -qa 然后执行 rpm -ql 软件名称 就可以显示软件的安装路径. 原文博客的链接地址:https://cnblogs.com/qzf/

  2. 如何让局域网其他电脑通过IP直接访问自己电脑的网站

    具体方法如下: 1. 打开系统的控制面板 2. 打开控制面板后打开window防火墙. 3.点击图中的“高级设置”选项. 4.点击图中的“本地计算机上的高级安全 Windows 防火墙”在右侧点击“W ...

  3. java并发编程实战:第五章----基础构建模块

    委托是创建线程安全类的一个最有效的策略:只需让现有的线程安全类管理所有的状态即可. 一.同步容器类 1.同步容器类的问题 同步容器类都是线程安全的,容器本身内置的复合操作能够保证原子性,但是当在其上进 ...

  4. Spring 之 IOC

    IoC的全称是Inversion of Control,中文称为控制反转, Martin Flower由根据它创造了一个新词:Dependency Injection,中文称为依赖注入.这两个词讲的是 ...

  5. Selenium WebDriver之JavaScript

    WebDriver提供了方法来同步/异步执行JavaScript代码,这是因为JavaScript可以完成一些WebDriver本身所不能完成的功能,从而让WebDriver更加灵活和强大. 本文中所 ...

  6. 朋友,请待你的朋友——BUG好一点!

    程序猿嘛,难免会被BUG缠身,我相信,没有一个程序猿在被BUG缠身时是感觉轻松的,消灭BUG一定是你最大的愿望.本周,我们团队的项目进入调试阶段,各种BUG层出不穷,眼看下个周就要进行项目答辩会,所以 ...

  7. 网站图标ICO

    效果图: 代码:   1 2 3 4 5 6 <head> ... <link rel="shortcut icon" href="/favicon.i ...

  8. 使用Hbuilder将自己app发布到App Store(一)

    1.如果你有mac系统那请看第二步. 首先需要一台虚拟机,还需要个插件要不没法装,都在这链接里面了 链接:https://pan.baidu.com/s/1N_pWJWFk-EJILTXuFr6w5g ...

  9. c++define的用法

    c++define的用法   在写程序时经常会碰到这样一个问题,我们需要重复写很多相同的代码,并且这些代码结构相同.总是想自己把这段代码封装一下然后直接进行调用,但是如果这段代码逻辑并不复杂,并且代码 ...

  10. 一次MySQL线上慢查询分析及索引使用

    本文由作者郑智辉授权网易云社区发布. 0.前言 本文通过分析线上MySQL慢查询日志,定位出现问题的SQL,进行业务场景分析,结合索引的相关使用进行数据库优化.在两次处理问题过程中,进行的思考. 1. ...