之前写了一个爬虫的包,主要是根据自己写爬虫的情况总结一下。
因为每次都要重复写一些代码,所以提炼出来,类似一个框架的样子吧。
开始是放在自己的项目里引用,但如果换了一个项目,就得重新拷一遍,很麻烦。
后面又学到了,放在site-package里面可以在自己的环境引用,但换一个环境也是不行的,于是想到放到pypi上面,可以直接pip install,就很方便。
记录一下上传包的过程。
一、准备好自己的模块
上图为文件结构,我将我的文件,spider和crawler放到了一个文件夹Elise里面,外面是setup.py
二、编写setup.py
1 #encoding=utf-8
2 #date: 2019/4/3
3 __author__ = "Masako"
4
5 from distutils.core importsetup6
7 setup(8 name='Elise', #安装包名称, pip install用
9 version='0.1.6', #版本,不可重复
10 author='Masako', #作者
11 author_email='Masako@example.com', #邮件
12 url='https://github.com/TitledPythonFile', #代码地址
13 #py_modules=['spider', 'crawler', 'test'], # 使用模块列表打包
14 packages=['Elise'], #使用文件夹(包)打包
15 license='GPL', #协议
16 description='Simple multithreading spider', #描述
17 long_description=open('README.rst').read(), #说明, 一定是rst
18 install_requires=[19 "requests==2.19.1", #需要安装的依赖,列表,有的版本不支持,推荐使用requirement.txt
20 ],21 )
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。
参考文档