dataabc / weiboSpider

新浪微博爬虫,用python爬取新浪微博数据
8.37k stars 1.98k forks source link

将该项目打包上传至 pypi 从而方便用户使用 #156

Closed songzy12 closed 4 years ago

songzy12 commented 4 years ago

动机

当前的项目有另外一个经过模块拆分的分支在 multi-file,但其实维护两个分支是不必要也不太方便的。 当时没有把重构的版本并入 master 的主要考虑似乎是担心增加用户的使用成本(或者还有其他?)。 我在想如果把这个项目打包上传至 pypi 后用户可以通过 pip install 来下载并使用,可以完全屏蔽掉实现细节,从而我们可以放心地修改源码使其方便开发人员,而用户只需要知道如何配置 config 即可。

效果

最近我大致调查并操作了一遍打包流程,当前可以实现效果如下。

在该项目以外的任何一个目录中使用 pip 安装该项目:

python3 -m pip install --index-url https://pypi.org/simple weibo-spider

在一个干净的目录下配置 config.json 后并运行:

python3 -m weibo_spider

我们做了什么

我们把这个项目打了个包在这里:https://pypi.org/project/weibo-spider/

如何打包

参考资料如下:

  1. 官方简单教程,看完这个后可以大致了解打包需要的配置及命令: https://packaging.python.org/tutorials/packaging-projects/

首先在 test.pypi.org (用于测试)和 pypi.org 上注册一个账号。 在测试环境中:

# upload
python3 setup.py sdist bdist_wheel
python3 -m twine upload --repository testpypi dist/*
# download
python3 -m pip install --index-url https://test.pypi.org/simple/ --no-deps weibo-spider
python3 -m weibo_spider

在实际环境中:

# upload
python3 setup.py sdist bdist_wheel
python3 -m twine upload dist/*
# download
python3 -m pip install  --index-url https://pypi.org/simple weibo-spider
python3 -m weibo_spider
  1. 如何更新包: https://stackoverflow.com/questions/52700692/a-guide-for-updating-packages-on-pypi

首先删除当前 dist/ 文件夹内容

rm dist/*

修改 setup.py 里版本号并重新打包上传:

vi setup.py
python3 setup.py sdist bdist_wheel
python3 -m twine upload dist/*

下载更新后的版本:

python3 -m pip install  --index-url https://pypi.org/simple  --upgrade weibo-spider
  1. 如何运行一个python包: https://stackoverflow.com/questions/6630822/running-a-python-package

  2. flask 项目可以作为一个参考,比如 .gitignore 的设置: https://github.com/pallets/flask/blob/master/.gitignore

  3. 不同 LICESNSE 之间的差异: https://www.ruanyifeng.com/blog/2011/05/how_to_choose_free_software_licenses.html

后续

  1. 我可以发一个 pull request 来提交相关的代码修改。
  2. 作者可以在 pypi.org 上注册账号后告知用户名,我把当前 weibo-spider 项目的 owner 转给作者。

然后普通用户就可以不用关心项目的代码;而有经验的开发者想要自己做修改来满足个性化需求的时候,他们处理经过模块拆分的版本可能会更加方便。

最终目标

再经过一段时间,我可以逐渐把当前 master 分支上新加的功能补齐到 multi-file 分支上; 然后我们就可以把 multi-file 分支 merge 到 master 啦。

songzy12 commented 4 years ago

之前的讨论:https://github.com/dataabc/weiboSpider/pull/91

dataabc commented 4 years ago

感谢建议。

非常好的建议,如果还有其它建议欢迎继续讨论

songzy12 commented 4 years ago

感谢作者的回复。

目前和这条 issue 相关的 TODO:

  1. 作者的 pypi 账号(用于作者维护后续的打包上传)
  2. 更新 README.md 中的使用方法
  3. 可能再稍微调查一下 LISENCE 相关的事情

我可能会再设计一下模块拆分,届时会开一个新的 issue.

dataabc commented 4 years ago

1.pypi 用户名:chenlei email:chillychen1991@gmail.com; 2.README今天或明天会更新; 3.LISENCE协议看了一些,目前最接近要求的是GPL协议,它也包含多个版本。软件A使用了GPL协议,如果B使用了A的代码,B也必须使用GPL。它没有禁止商用使用,但使用GPL意味着开源,而商业软件是不会开源的。这只是我发现的最接近要求的协议,如果你发现更好的欢迎讨论。

songzy12 commented 4 years ago

pypi 添加好啦,因为我不能修改自己的身份,作者可以把我从 "owner" 调成 "maintainer": https://pypi.org/manage/project/weibo-spider/collaboration/

小贴士: 在开发的时候可以通过在项目根目录 (weiboSpider/) 下运行 python -m weibo_spider 来看模块的运行是否正确,效果应该和 twine upload 再 pip install --upgrade 之后是一样的。

dataabc commented 4 years ago

已经修改成maintainer了,感谢,辛苦啦

songzy12 commented 2 years ago

一个 Follow Up:

加 PyPI 的另一个好处是 Github 会自动汇总通过 requirements.txt 依赖了当前项目的其他项目, 也算是某种 Acknowledgement ^_^:

1647561515(1)