每个软件开发员和数据科学家都难免要做程序包。本文推荐一篇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 LICENSEREADME.rst

为主项目文件创建一个子文件夹,建议子文件夹的命名与程序包的相同,并确认名称不包含空格。

在子文件夹中创建一个名为 __init__.py的文件,这个文件可以先空着。将文件导入到子文件夹时,这个文件是必需的。

创建另一个与子文件夹同名的文件,并在文件名后添加.py。我的文件名是notebook .py。你可以按自己心意给这个Python文件命名。

现在notebookc目录内容如下:

.git.gitignore LICENSEREADME.rstnotebookc/__init__.pynotebookc/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

python 包 子文件夹调用_15步,你就能拥有自己的Python程序包相关推荐

  1. python相对路径找不到文件_Python相对路径从子文件夹导入

    首先发布到SO,所以如果我错过了一些细节,请原谅我. 有没有办法使用来自另一个子文件夹的相对路径而不需要通过os修改sys.path?最终这将从cgi网络服务器运行,所以我宁愿远离python.exe ...

  2. python os.removedirs() 和shutil.rmtree()(os.removedirs用于删除非空文件夹和子文件夹、shutil.rmtree用于删除文件夹下所有文件夹和文件)

    文章目录 shutil.rmtree() os.removedirs() shutil.rmtree() shutil.rmtree() 表示递归删除文件夹下的所有子文件夹和子文件. def rmtr ...

  3. python exchangelib 删除邮件_Python exchangelib在子文件夹中读取邮件 - python

    我想从Outlook邮箱的子文件夹中读取邮件. Inbox ├──myfolder 我可以使用account.inbox.all()阅读收件箱,但我想阅读myfolder中的邮件 我尝试了此页面fol ...

  4. 如何一步更改文件夹及其子文件夹/文件的权限

    问: 我想在 Linux 中一步(命令)更改文件夹及其所有子文件夹和文件的权限. 我已经尝试过以下命令,但它仅适用于提到的文件夹: chmod 775 /opt/lampp/htdocs 有没有办法为 ...

  5. python读取一个文件夹/子文件夹下的所有文件名字

    python读取一个文件夹/子文件夹下的所有文件名字 示例代码: import osfile_path = './images/' all_file_name = os.listdir(file_pa ...

  6. python实现将文件夹/子文件夹中内容清空

    一.写在前面 需求:若有很多文件夹/子文件夹,需要将里面的内容清空,若将里面全部图片删掉,用python实现可以简化操作. 二.源码 import ospath = 'C:/Users/Adminis ...

  7. python实现将子文件夹下的图片复制到新的文件夹并重命名

    一.要求 在文件夹中有若干子文件夹,且子文件夹中有若干图片,按照要求将子文件夹中符合命名的图片复制到新的文件夹中,并重新命名这些图片. 即将在train文件夹中有若干命名为rgb_0001_json的 ...

  8. Python批量修改文件夹及其子文件夹下的文件内容

    前言:前几天我看一位同学要修改很多文件中的数据,该文件数据很规律,一行只有三个数,需要将每行最后一个数字改为负数,但文件有上千个,分布在每个文件夹下面以及它的多级子文件夹下,看他用excel手动改数据 ...

  9. python修改文件内容_python批量修改文件夹及其子文件夹下的文件内容

    前言:前几天我看一位同学要修改很多文件中的数据,该文件数据很规律,一行只有三个数,需要将每行最后一个数字改为负数,但文件有上千个,分布在每个文件夹下面以及它的多级子文件夹下,看他用excel手动改数据 ...

最新文章

  1. some requirement checks failed
  2. java 解压缩 工具类_Java实现的zip压缩及解压缩工具类示例
  3. 提取图片纹理_Fundamentals Of Computer Graphics 第十一章 纹理映射(中)
  4. kingedit 上传php_php文件上传下载实例(实现最简单的网盘功能)
  5. 时间序列趋势判断(三)——Mann-Kendall趋势检验
  6. [Reinforcement Learning] Value Function Approximation
  7. hdu 3635 Dragon Balls 并查集应用记录每个点的转移次数
  8. 3Ds Max字母键的妙用
  9. GhostXP_SP3 PCOS技术快速装机版 5.7(优化细节 力争完美)
  10. 微信8.0下载(可抓包)
  11. 如何通过Python发送邮件实现自动化测试报告?
  12. jqgrid冻结前后列
  13. 四级英语图表作文真题计算机,2016年四级作文模板之图片与图表
  14. Linux常见错误 “cp: omitting directory”解决办法
  15. Android Study之跳转自启动管理页
  16. onload的具体使用
  17. SDN北向接口之REST API
  18. python 基础知识点 (一)
  19. Kotlin使用Coroutine+ViewModel+retrofit构建一个网络请求框架
  20. Python爬虫爬取单张图片

热门文章

  1. 幻想乡三连A:五颜六色的幻想乡
  2. [spark程序]统计人口平均年龄(本地文件)(详细过程)
  3. composer的使用
  4. 利用MSF批量打RMI漏洞
  5. bzoj2431:[HAOI2009]逆序对数列
  6. 【随记】Q号解除限制一波三折
  7. java中子类怎样调用父类的属性_java的继承、重载(overload)、覆盖(override)的总结...
  8. 设计灵感|有趣优雅的弹窗消息设计!
  9. 新年到!充满年味的海报给你参考
  10. 设计灵感|引导页设计中如何借助图形来展现场景?