范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文

15步,你就能拥有自己的Python程序包

  每个软件开发员和数据科学家都难免要做程序包。本文推荐一篇Python开源程序包的制作指南,希望这个包含了具体操作步骤的指南能让你在构建程序包时不用花那么多耐心和时间。(适用于macOS系统的Python3.7版本)
  尝试着自己去构建美丽的东西吧!
  第1步:制定计划
  我们的最终目的是制作一个很简单的Python库,它能够让用户轻松地将Jupyter笔记本转换为HTML文件或Python脚本。
  程序包的第一个迭代可以让用户调用print语句的函数。
  既然我们已经知道想做什么了,接下来要给包命名。
  第2步:命名
  命名并不简单。名字要取得独特,简短且好记,要全部都是小写字母,绝对不能有破折号或其他标点符号,下划线也不行。给包命名的时候,还需要在GitHub,Google 和PyPI上确认这个名字是否可用。
  如果你对包期望很高,希望在某一天它在GitHub上会有10000颗星星,那你还得确认这个名字是否能用于社交网络。在本文的示例中,我们把包命名为notebookc, 因为它能用于各种平台,简短而且有描述意义。
  第3步:检查配置
  确保你安装配置了Python3.7,GitHub和 Homebrew。需要的话,可以在下面下载:
  Python
  下载安装Python3.7:https://www.python.org/downloads/
  GitHub
  免费注册GitHub账户:https://github.com/join
  安装Git:https://help.github.com/articles/set-up-git/
  Homebrew
  Homebrew是Mac系统特有的程序包管理器。(安装说明:https://brew.sh/)。
  Venv
  如果使用的是Python3.6版本,建议用venv来创建虚拟环境以构建程序包。用Python来管理虚拟环境的方法很多,可遵循的建议也有很多。
  从Python3.3版本起,Python就自带venv了,但要注意,从Python3.4的版本开始,venv才能在虚拟环境中安装pip和setuptools。
  用下列命令在Python3.7中创建虚拟环境:
  python3.7-m venv my_env
  用你喜欢的名字替换 my_env,激活虚拟环境:
  sourcemy_env/bin/activate
  现在可以在终端提示的最左端看到 (my_env) ,或者看到你给虚拟环境取的名字。
  完成之后,使用deactivate停用虚拟环境。
  之后,在GitHub上进行设置。
  第4步:在GitHub上创建组织
  GitHub在版本控制注册上是市场领导者,其他的包括GitLab 和Bitbucket也很受欢迎。本指南中我们是用GitHub。
  按照提示,在GitHub上创建一个新组织。我们将组织命名为notebooktoall。你可以在个人帐户下创建知识库(repository),但我们的目标之一是学习如何为更大的群体创建一个开源项目。
  第5步:创建GitHub知识库
  创建一个新的知识库。
  从下拉列表中添加gitignore,为你的知识库选择Python。gitignore文件的内容与要从Git知识库中剔除的文件夹和文件类型相匹配。你可以之后再修改gitignore以剔除其他不必要或敏感的文件。
  建议从下拉列表的添加许可证(Add alicense)中选择一个许可证,它决定了使用知识库内容的用户能做什么。一些许可证会比较宽松,如果没有选择许可证,系统会采用默认的版权法。
  本文的项目选的是通用公共许可证v3.0(GeneralPublic Licens v3.0 ),因为它用的广泛,而且可以"保证终端用户运行、学习、共享和修改软件的自由"——来自维基百科。
  第6步:复制和添加目录
  选择要在本地复制知识库的位置,然后按下面的说明运行:
  复制git https://github.com/notebooktoall/notebookc.git
  替代组织和知识库。
  使用桌面图形用户界面(GUI)或代码编辑器进入项目文件夹,或者用cd my-project的命令行进入项目文件夹,然后用 ls—A查看文件。初始文件夹和文件如下:.git
  .gitignore
  LICENSE
  README.rst
  为主项目文件创建一个子文件夹,建议子文件夹的命名与程序包的相同,并确认名称不包含空格。
  在子文件夹中创建一个名为 __init__.py的文件,这个文件可以先空着。将文件导入到子文件夹时,这个文件是必需的。
  创建另一个与子文件夹同名的文件,并在文件名后添加.py。我的文件名是notebook .py。你可以按自己心意给这个Python文件命名。
  现在notebookc目录内容如下:.git
  .gitignore
  LICENSE
  README.rst
  notebookc/__init__.py
  notebookc/notebookc.py
  第7步:创建和安装requirements_dev.txt
  在项目目录顶端创建一个requirements_dev.txt文件。通常把这个文件命名为requirements.txt。这样命名强调了这些程序包全部是开发员安装的。
  在requirements_dev.txt里,要安装特定版本的pip和wheel。
  pip==19.0.3
  wheel==0.33.1
  注意,这里用两个等号以及版本号指明了应安装的程序包的确切版本。
  将特定版本的程序包安装到requirements_dev.txt中。
  如果合作开发员要分裂项目知识库,用pip来安装特定requirements_dev.txt程序包,就要用和你一样版本的包。此外,在创建文件的时候,Read TheDocs可使用这个文件来安装程序包。
  在已经激活的虚拟环境中,使用以下命令将程序包安装到requirements_dev.txt:
  pipinstall -r requirements_dev.txt
  第8步:代码和提交
  作为示例,我们先创建一个很简单的函数。你可以之后再建一个很牛的函数。
  在主文件中键入以下内容:
  (我们要键入的是 notebookc/notebookc/notebookc.py)def convert(my_name):
  """
  Print a lineabout converting a notebook.
  Args:
  my_name(str): person"s name
  Returns:
  None
  """
  print(f"I"ll convert a notebook for you some day, {my_name}.")
  这就是我们建的函数啦。
  文档字符串(docstrings)以三个连续的双引号开始并结束。在以后的文章中,它们会被用于自动创建文档。
  现在提交修改。
  第9步:创建setup.py
  setup.py文件是程序包的构建脚本文件。Setuptools的setup函数可构建要上传到PyPI的程序包。Setuptools里有程序包的信息,版本号以及用户所需要的其他程序包的信息。
  以下是本文的setup.py文件示例:from setuptools import setup, find_packages
  with open("README.md", "r") asreadme_file:
  readme =readme_file.read()
  requirements = ["ipython>=6","nbformat>=4", "nbconvert>=5","requests>=2"]
  setup(
  name="notebookc",
  version="0.0.1",
  author="Jeff Hale",
  author_email="jeffmshale@gmail.com",
  description="A package to convert your Jupyter Notebook",
  long_description=readme,
  long_description_content_type="text/markdown",
  url="https://github.com/your_package/homepage/",
  packages=find_packages(),
  install_requires=requirements,
  classifiers=[
  "Programming Language :: Python :: 3.7",
  "License :: OSI Approved :: GNU General Public License v3(GPLv3)",
  ],
  )
  注意,long_description是README.md文件内容里的。
  在setuptools.setup.install_requiresincludes中指定的 requirements列表包括了程序包运作所需的所有依赖程序包。
  与requirements_dev.txt开发所需的包不同,这个包列表应尽可能地宽松。
  将install_requires的包列表限制在只能安装需要的包,你肯定不想用户安装不必要的包。注意,只需要列出不属于Python标准库里的包即可。如果用户要用你的包的话,就必须要安装Python。
  这个包不需要任何外部依赖,因此你可以剔除上面列出的四个包。如果共同开发员要分裂项目知识库,用pip安装特定包的话,要用和你一样版本的包。
  将代码提交到本地Git知识库。现在万事俱备,可以开始建程序包了!
  第10步:构建首个版本
  Twine是一个公用程序组,可以在PyPI上安全地发布Python包。将Twine包添加到 requirements_dev.txt 的下一个空行中,如下所示:twine==1.13.0
  然后重新安装requirements_dev.txt包以将Twine安装到虚拟环境中。
  pipinstall -r requirements_dev.txt
  然后运行下列命令,创建包文件:pythonsetup.py sdist bdist_wheel
  过程中会创建许多隐藏的文件夹:dist, build等,我创建的是notebookc.egg-info。我们看下dist文件夹中的文件。.whl文件是Wheel文件,即创建的分布。.tar.gz文件是源代码压缩文档。
  Wheel
  在用户的设备上,pip会像wheels一样在任何可能的时候安装程序包。Wheel在安装的时候更快。当pip不能安装wheel时,它就会回到源代码压缩文档。
  让我们准备好上传wheel和源代码压缩文档吧。
  第11步:创建TestPyPI帐号
  PyPI是Python Package Index的缩写,它是Python官方程序包管理器。pip可以从PyPI中抓取没有在本地安装的文件。
  PyPI
  TestPyPI是PyPI中运行的一个测试版本。注意,在测试站点上传和在官方站点上传的密码是不同的。
  创建TestPyPI帐户:https://test.pypi.org/account/register/。
  第12步:在TestPyPI上发布
  Twine
  用Twine将你的程序包安全地发布到TestPyPI上。键入下列命令——无需修改。
  twineupload --repository-url https://test.pypi.org/legacy/ dist/*
  系统会提示你输入用户名和密码。记住,TestPyPI和PyPI 的密码是不同的。
  需要的话,就修正包的错误,在setup.py中创建新的版本号,删除旧版本的build, dist和 egg 文件夹。用pythonsetup.py sdist bdist_wheel重建,用Twine重新上传。在TestPyPI上的版本号没什么意义,这并不是大事,因为你是唯一用这些版本的包的人。
  成功上传程序包之后,确认它可以被安装使用。
  第13步:确认安装和使用
  在终端创建另一个标签,并创建另一个虚拟环境。
  python3.7-m venv my_env
  激活它
  source my_env/bin/activate
  如果你已经将包上传到PyPI 官方网站,接下来就要用pip安装这个程序包。可以在PyPI检索到该程序包,然后用修改过的命令安装它。
  从TestPyPI安装程序包的官方指导如下:
  可以通过— index-url flag命令pip在TestPyPI上下载安装包,而不用在PyPI 上下载。
  pip install--index-url https://test.pypi.org/simple/ my_package
  如果你要允许pip在PyPI上下载其他的包,可以命令— extra-index-url指向PyPI。如果你测试的程序包有依赖包,这将会非常有用。
  pipinstall --index-url https://test.pypi.org/simple/ --extra-index-urlhttps://pypi.org/simple my_package
  如果你的程序包有包依赖,用上面提到的第二个命令,并替换你的程序包名称。
  你应该看一下安装到虚拟环境的程序包的最新版本。
  为了确认程序包可以使用,用python在终端启动IPyon会话。
  导入函数并用字符串参数调用函数。我的代码如下:
  fromnotebookc.notebookc import convert
  convert("Jeff")
  随后可以看到下面的输出:I’llconvert a notebook for you some day, Jeff.
  确认可以用了。
  好了,现在把作品上传到Git Hub吧。
  第14步:上传到GitHub
  确保你的代码已提交。
  notebookc项目文件夹如下所示:.git
  .gitignore
  LICENSE
  README.md
  requirements_dev.txt
  setup.py
  notebookc/__init__.py
  notebookc/notebookc.py
  剔除你不想上载的虚拟环境。在创建知识库时选择的Python的 .gitignore文件可使构件不被列入索引。
  你可能需要删除虚拟环境文件夹。
  用git pushorigin my_branch.将本地分支传到GitHub。
  第15步:创建与合并PR
  在浏览器中打开Github,可以看到拉入请求选项。长按绿色按钮创建并合并你的PR,并删除远程特征分支。
  回到终端,使用gitbranch -d my_feature_branch删除本地特征分支。
  回顾:制作程序包的15个步骤
  1. 制定计划
  2. 命名
  3. 检查配置
  4. 在GitHub上创建组织
  5. 创建GitHub知识库
  6. 复制和添加目录
  7. 创建和安装requirements_dev.txt
  8. 代码和提交
  9. 创建 setup.py
  10. 构建首个版本
  11. 创建TestPyPI账号
  12. 在TestPyPI上发布
  13. 确认安装和使用
  14. 上传到 GithHub
  15. 创建与合并PR

数智体验亮点十足感受2021年服贸会独特魅力建筑3D打印观摩5G8K超高清转播车9月3日,采用一会两馆模式举办的2021年中国国际服务贸易交易会位于国家会议中心和首钢园的展区正式开放。在这里,不仅有大量别具匠心的多彩场景遍布是无奈还是国人崇洋媚外?国内手机高端市场还是被苹果无情碾压这几年,国产电子技术得到了飞跃的发展,最明显的表现之一就是智能手机,这几年国产智能手机不断推陈出新,创新手机技术,在全球处于领先地位,比如屏下指纹识别,屏下摄像头等技术等遥遥领先,三星折叠屏手机要取代note系列?安卓机皇的前世今生一览以往下半年的时间里,note系列是三星的重头戏,而今年三星却直接跳过了该系列,发布了两款折叠屏手机,其中ZFold3也是支持note系列标志性的手写笔,似乎是想用折叠屏来取代这个系大荒良品智能碾米机是无人零售最佳落地方案淘宝的新零售京东的无界零售苏宁的智慧零售,一个个概念出炉的背后,实际上是对零售商业变革的预判和模式思考。而就在巨头们还在拿捏和试探市场之际,一种新型的无人零售模式智能碾米机,已经在江西省教育厅与腾讯公司签署战略合作框架协议来源江西日报江西新闻客户端江西新闻客户端讯(江西日报记者蔡颖辉)8月26,江西省教育厅在南昌分别与中国电信江西公司深圳腾讯公司签署战略合作框架协议,在专业建设及产业人才培养信息化校中国互联网广告哪家强?BAT位居前三,3家非互联网公司入围前152021年上半年,中国各家互联网公司的广告收入出炉。毫无意外,BAT依然是互联网广告收入的三强略有惊讶,三家非互联网公司的广告收入也入围前15位。广告收入的三强显然依然是BAT,它大学里的什么专业比较有发展前景?感谢悟空小秘书头条教育联盟的邀请。提问的补充学什么专业能在大学毕业后养得起自己和一只猫?题主需要的是一只猫,什么专业毕业养活你和猫都没问题的,只要要正常就业。专业有发展前景,潜力好带了助听器听的声音很假,老感觉听自己的声音有回声,这个正常吗?基本上都是因为助听器低频增益过多造成的,适当削减低频或总音量,就能得到满意的效果。还有一个可能就是压缩线路类助听器拐点偏低压缩过大,适当调节压缩特性可以得到明显改善。助听器的工作原想换手机了,家人们有什么性价比高的推荐下?文小伊评科技本文会从1000元开始给大家推荐一下各个价位段中最值得购买的高性价比机型,希望可以帮到你。10001500元档入榜机型IQOOZ3(6128G版),红米Note10Pr你认为江西地理位置最好的城市是哪个?谢谢邀请,江西省位于我国南方地区,长江南岸,属于华东地区,也属于中部经济地带,江西省东临福建浙江,南临广东,西靠湖南,北接湖北和安徽。2019年上半年江西省GDP总量约为10757石墨烯电瓶和云电瓶哪个更好经济实用?大家好,我是天能电池南阳办事处的虎稚稚,专业解答电池方面的问题。我就是专门做电池售后的,两种电池也都有接触,但是我觉得还是云电池(黑金电池)更加经济实用。要比咱们就拿消费者最关心的
当肯德基餐厅遭遇人工智能核心阅读如果说谷歌的AlphaGo在做高大上的情怀,那么百度与肯德基打造的智能餐厅概念店里则窥见百度的人工智能更务实,它的直接目标是服务化。自从谷歌AlphaGo战胜围棋世界冠军李梦幻西游主题小镇,空降重庆融创文旅城渝你相约,纯爱梦幻。梦幻西游x融创文旅城联动活动2。0来啦!10月1日,梦幻西游主题小镇正式开启!游戏里的三界乐趣不断,游戏外的主题线下活动也要精彩加码!走入梦幻主题小镇,打破次元五菱飘了?首台10万级SUV要跟哈弗H6过过招从当年的五菱之光到如今的宏光S,从银标凯捷到宏光MINIEV,五菱汽车在多个细分领域给市场和用户带来惊喜。如今,神车五菱终于要对810万级都市SUV市场下手了!近日,银标家族首款S尼尔伪装者上线蓝宝石显卡全程畅玩尼尔伪装者ver。1。22474487139正式上架,从官网公布的信息来看,这款游戏可以说是尼尔伪装者的重制版,除了保留原版游戏内容外,也在此基础上进行了扩充,并且重制版的画质相较华硕AMD主板带队出击助力畅游尼尔伪装者近日动作游戏尼尔伪装者ver。1。2247已在Steam平台正式发售,PC端销量成功登顶,并在IGN上获得了8分的好成绩,本作讲述了尼尔机械纪元世界是如何形成的,主角是一位住在边境九十年辉煌,创赢未来福斯集团90年庆2021年9月28日,福斯油品集团九十周年庆典暨福斯中国总部大楼落成仪式在福斯中国总部隆重举行。福斯中国员工代表与30余家行业媒体汇聚一堂,共同见证这一里程碑时刻。福斯,1931年蚂蚁链宣布与大疆农业合作降低5万飞手租机成本16日,蚂蚁集团旗下蚂蚁链宣布与大疆农业达成合作,基于区块链解决方案提升信任,通过无人机租赁平台嗨森植保推出融资租赁服务。据介绍,购买或租赁无人机,购买相关配套,配置车辆,一套下来戴尔灵越15Plus超薄上线,30系显卡势不可挡众所周知戴尔在数码产品领域的口碑一直不错,旗下产品系列多,忠实用户也不少,就最近上线的几款笔记本,其中戴尔灵越15Plus以超薄创作本火爆出圈,I7处理器,游戏级30系显卡,整个性库比克第七轴系统功能描述1移动小车移动与定位移动小车在直线方向上的移动与定位可通过操作面板及显示屏直接编辑,理论上在直线轴有效行程范围内,可以设置无数个定位点。位置精度由编码器精确检测,通过伺服系统控制电机器人地轨的功能介绍工业自动化中,工业机器人逐渐被应用于生产的各个环节,替代人工作业,促进了自动化生产的进程。而机器人地轨作为机器人的一个行走辅助机构,也快速发展起来,在一些空间复杂工件大的场合应用广终于开卖R9配3070旗舰版天选2游戏本8月5日开抢因为众所周知的原因,接下来一段时间呆在家里的时间会更多,玩游戏成为了不断增强的刚需。加上近期不断有好玩的3A大作涌现,入手一台颜值在线,性能彪悍的游戏本必须要提上日程了。玩家们热烈