造一个轮子然后安装到pypi上
之前写了一个爬虫的包,主要是根据自己写爬虫的情况总结一下。
因为每次都要重复写一些代码,所以提炼出来,类似一个框架的样子吧。
开始是放在自己的项目里引用,但如果换了一个项目,就得重新拷一遍,很麻烦。
后面又学到了,放在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。
参考文档
造一个轮子然后安装到pypi上的更多相关文章
- dva的effect那么难用,自己造一个轮子吧
背景 对于dva这个开发框架,国内从事react的前端工程师多半不会感到陌生,dva完善的开发体系和简单的api,让其被广泛运用到实际工作中.我所在的公司也是长期使用dva作为基础的开发框架,虽然好用 ...
- 「造个轮子」——cicada 设计一个配置模块
前言 在前两次的 cicada 版本中其实还不支持读取配置文件,比如对端口.路由的配置. 因此我按照自己的想法创建了一个 issue ,也收集到了一些很不错的建议. 最终其实还是按照我之前的想法来做了 ...
- RPC基础以及造一个RPC的轮子需要注意些什么
RPC基础以及造一个RPC的轮子需要注意些什么 前言 rpc即远程过程调用,是分布式系统常用的通信方法.远程可以是在一台机器上的不同进程或在不同一个机器上的不同进程.rpc更看重速度,像调用本地方法一 ...
- 关于“找不到附属汇编 Microsoft.VC90.CRT,上一个错误是 参照的汇编没有安装在系统上。”的解决
关于“找不到附属汇编 Microsoft.VC90.CRT,上一个错误是 参照的汇编没有安装在系统上.”的解决 一个项目需要在Win系统用计划任务执行PHP,写了个批处理bat利用php-cgi.ex ...
- ios 给微信开发一个插件并安装到未越狱的手机上教程
现来整体说一下思路,首先给越狱的手机开发一个插件并安装上去,然后去越狱手机上找到相应的动态库和对应的微信APP安装包,拷贝出来,然后重新签名,就可以安装到未越狱的手机上了 1.首先你的电脑需要安装th ...
- pypi上传库
把程序打包上传到PyPi版本库中 转自 1 首先必须要按照以下文件结构 ├── douban │ ├── cli.py │ ├── douban.py │ ├── douban_token ...
- 将自己写的Python代码打包放到PyPI上
如果是开源的Python代码,为了能够让大家更方便的使用,放到PyPI上也许是个非常不错的主意(PyPI:Python Package Index).刚开始我以为要将代码打包放到PyPI上是一件非常复 ...
- 如何将你自己的Python package发布到PyPI上
零.前言 最近做了一个小工具,查询IP或者域名的归属地.做完之后想发布到PyPI上,这样大家就可以通过pip来安装了. 在发布的过程中遇到了一些问题,也学到了很多东西.记录到这篇文章中.希望对大家有所 ...
- Asp.net Mvc 请求是如何到达 MvcHandler的——UrlRoutingModule、MvcRouteHandler分析,并造个轮子
这个是转载自:http://www.cnblogs.com/keyindex/archive/2012/08/11/2634005.html(那个比较容易忘记,希望博主不要生气的) 前言 本文假定读者 ...
随机推荐
- Eclipse配置PyDev插件(配置Python环境) 及javascript相关配置
Eclipse开发Javascript环境配置(含EXTJs配置) 来自:sayo http://www.cnblogs.com/sayo/archive////.html Eclipse开发JQue ...
- C# Redis Server分布式缓存编程(二)(转)
出处;http://www.cnblogs.com/davidgu/p/3263485.html 在Redis编程中, 实体和集合类型则更加有趣和实用 namespace Zeus.Cache.Red ...
- web.xml配置中的log4jRefreshInterval讲解
采用spring框架的项目如何使用log4j在spring中使用log4j,有些方便的地方, 1.动态的改变记录级别和策略,即修改log4j.properties,不需要重启web应用,这需要在web ...
- Solr中的概念:分析器(analyzer)、字符过滤器(character filter)、分词器(Tokenizer)、词元过滤器(Token Filter)、 词干化(Stemming)
文本中包含许多文本处理步骤,比如:分词,大写转小写,词干化,同义词转化和许多的文本处理. 文本分析既用于索引时对一文本域的处理,也用于查询时查询字符串的文本处理.文本处理对搜索引擎的搜索结果有着重要的 ...
- PostgreSQL递归查询
原料 --创建组织架构表 create table "Org"( "OrgId" ) primary key, "ParentId" ), ...
- .Net core 2.0的数据初始化
在StartUp.cs里面,添加Seed方法 public static void Seed(IApplicationBuilder applicationBuilder) { using (var ...
- NETCore调用AD域验证
一.添加引用 System.DirectoryServices System.DirectoryServices.AccountManagement 二.验证代码 声明域 string domainN ...
- WPF显示Gif动画
WPF的Image控件不能很好的支持.gif文件.解决办法有如下2种. 1使用MediaElement <MediaElement Source="file://D:\anim.gif ...
- mac下wordpress环境搭建
mac下本来就有apache和php,只需要配置以下+安装mysql 1.Apache 预装目录在 /etc/apache2: 默认的网站目录在 /Library/WebServer/Documen ...
- openstack kolla 部署---不同的节点采用不同的物理接口
在 /etc/kolla/globals.yml 文件中删除 neutron_external_interface tunnel_interface api_interface storage_ ...