为什么选择Python包?
Python支持所有类型的执行;您可以直接在 shell 中运行 Python 代码,或者将代码放入文件中并稍后运行。
有时候开始一个新的Python项目是非常困难的;写剧本?写一个模块?写个包吗?
最好的选择是微片模式:编写一个脚本,然后在模块中重写它,然后在包中重写。
这种模式让您不必每天重新发明轮子,并且可以在将来重用代码。
Python包结构
Python 包具有以下结构:
pkg ├── __init__.py ├── module1.py └── subpkg ├── __init__.py ├── __main__.py └── module2.py
文件夹pkg是一个包,因为包含__init__.py模块。 subpkg 文件夹也是一个包;是pkg的子包。
module1.py 和 module2.py 是其包的模块。
__main__.py 模块允许执行包。
只有这里吗?其他的事情?
如果你要成为一名 Python 开发人员,那么你会使用其他常用工具。
按照顺序,您编写的每一段代码都遵循以下步骤:
- 将Python代码写入你的包
- 跟踪您的修改
- 测试您编写的所有代码
- 将您的代码放入您测试的环境中
- 将代码推送到远程存储库
- 构建您的分发包
- 将你的包上传到 PyPi
管道
代码中的每一个更改都可能会引入可能的错误。为了放弃这个,每次我们需要在正确的环境中测试自己的包时。
要做到这一点,除了 Python 本身之外还需要一些工具,比如 git、docker 和 make。
文档、许可证和其他通用文件
仅仅创建一个 Python 包并使其立即可供所有人使用是不够的。您还必须考虑如何记录它、向其他人简要解释它、许可它并解释如何集成到项目中。
这需要开发诸如 README、LICENSE、CODE_OF_CONDUCT 和 CONTRIBUTING 等文件。
也许添加一个 CHANGELOG 来保存并让其他人跟踪对每个版本所做的更改。
几分钟内创建项目
要实现 Python 项目的所有部分,需要几个小时或几天的时间。
但有一个用于此目的的工具:psp。
按照安装说明进行操作后:
[test@ubuntu ~] sudo apt install -y python3 python3-pip git curl [test@ubuntu ~] curl -L https://github.com/MatteoGuadrini/psp/releases/download/v0.1.0/psp.deb -o psp.deb [test@ubuntu ~] sudo dpkg -i psp.deb
运行它:
[test@ubuntu ~] psp Welcome to PSP (Python Scaffolding Projects): 0.1.0 > Name of Python project: app > Do you want to create a virtual environment? Yes > Do you want to start git repository? Yes > Select git remote provider: Gitlab > Username of Gitlab: test_user > Do you want unit test files? Yes > Install dependencies: flask > Select documention generator: MKDocs > Do you want to configure tox? Yes > Select remote CI provider: CircleCI > Do you want create common files? Yes > Select license: Gnu Public License > Do you want to install dependencies to publish on pypi? Yes > Do you want to create a Dockerfile and Containerfile? Yes Python project `app` created at app
现在,检查已创建的Python项目:
[test@ubuntu ~] ls -lah app total 88K drwxrwxr-x 9 test test 440 Dec 20 14:48 . drwxrwxrwt 29 root root 680 Dec 20 14:49 .. drwxrwxr-x 2 test test 60 Dec 20 14:47 .circleci drwxrwxr-x 7 test test 200 Dec 20 14:47 .git -rw-rw-r-- 1 test test 381 Dec 20 14:47 .gitignore drwxrwxr-x 4 test test 80 Dec 20 14:47 .gitlab -rw-rw-r-- 1 test test 127 Dec 20 14:48 CHANGES.md -rw-rw-r-- 1 test test 5.4K Dec 20 14:48 CODE_OF_CONDUCT.md -rw-rw-r-- 1 test test 1.1K Dec 20 14:48 CONTRIBUTING.md -rw-rw-r-- 1 test test 190 Dec 20 14:48 Containerfile -rw-rw-r-- 1 test test 190 Dec 20 14:48 Dockerfile -rw-rw-r-- 1 test test 35K Dec 20 14:48 LICENSE.md -rw-rw-r-- 1 test test 697 Dec 20 14:48 Makefile -rw-rw-r-- 1 test test 177 Dec 20 14:48 README.md drwxrwxr-x 2 test test 60 Dec 20 14:47 docs -rw-rw-r-- 1 test test 19 Dec 20 14:47 mkdocs.yml -rw-rw-r-- 1 test test 819 Dec 20 14:48 pyproject.toml -rw-rw-r-- 1 test test 66 Dec 20 14:47 requirements.txt drwxrwxr-x 2 test test 80 Dec 20 14:47 tests -rw-rw-r-- 1 test test 213 Dec 20 14:47 tox.ini drwxrwxr-x 2 test test 80 Dec 20 14:46 app drwxrwxr-x 5 test test 140 Dec 20 14:46 venv
开始开发包
开始开发 psp 命令为我们的项目创建的包。
[test@ubuntu ~] cd app/ && ls -lh app/ total 8.0K -rw-rw-r-- 1 test test 162 Dec 20 14:46 __init__.py -rw-rw-r-- 1 test test 204 Dec 20 14:46 __main__.py [test@ubuntu ~] vim app/core.py
from flask import Flask app = Flask(__name__) @app.route("/") def hello_world(): return "<p>Wow, this is my app!</p>"
现在,将我们的 hello_world 函数导入到 __main__.py 文件中:
pkg ├── __init__.py ├── module1.py └── subpkg ├── __init__.py ├── __main__.py └── module2.py
[test@ubuntu ~] sudo apt install -y python3 python3-pip git curl [test@ubuntu ~] curl -L https://github.com/MatteoGuadrini/psp/releases/download/v0.1.0/psp.deb -o psp.deb [test@ubuntu ~] sudo dpkg -i psp.deb
运行我们的包
您已经编写了一个简单但有组织且功能强大的包,可以用于生产和分发。
测试我们的包。
[test@ubuntu ~] psp Welcome to PSP (Python Scaffolding Projects): 0.1.0 > Name of Python project: app > Do you want to create a virtual environment? Yes > Do you want to start git repository? Yes > Select git remote provider: Gitlab > Username of Gitlab: test_user > Do you want unit test files? Yes > Install dependencies: flask > Select documention generator: MKDocs > Do you want to configure tox? Yes > Select remote CI provider: CircleCI > Do you want create common files? Yes > Select license: Gnu Public License > Do you want to install dependencies to publish on pypi? Yes > Do you want to create a Dockerfile and Containerfile? Yes Python project `app` created at app
结果是:
对包执行单元测试
现在还通过测试文件夹测试包上的 Python 代码:
[test@ubuntu ~] ls -lah app total 88K drwxrwxr-x 9 test test 440 Dec 20 14:48 . drwxrwxrwt 29 root root 680 Dec 20 14:49 .. drwxrwxr-x 2 test test 60 Dec 20 14:47 .circleci drwxrwxr-x 7 test test 200 Dec 20 14:47 .git -rw-rw-r-- 1 test test 381 Dec 20 14:47 .gitignore drwxrwxr-x 4 test test 80 Dec 20 14:47 .gitlab -rw-rw-r-- 1 test test 127 Dec 20 14:48 CHANGES.md -rw-rw-r-- 1 test test 5.4K Dec 20 14:48 CODE_OF_CONDUCT.md -rw-rw-r-- 1 test test 1.1K Dec 20 14:48 CONTRIBUTING.md -rw-rw-r-- 1 test test 190 Dec 20 14:48 Containerfile -rw-rw-r-- 1 test test 190 Dec 20 14:48 Dockerfile -rw-rw-r-- 1 test test 35K Dec 20 14:48 LICENSE.md -rw-rw-r-- 1 test test 697 Dec 20 14:48 Makefile -rw-rw-r-- 1 test test 177 Dec 20 14:48 README.md drwxrwxr-x 2 test test 60 Dec 20 14:47 docs -rw-rw-r-- 1 test test 19 Dec 20 14:47 mkdocs.yml -rw-rw-r-- 1 test test 819 Dec 20 14:48 pyproject.toml -rw-rw-r-- 1 test test 66 Dec 20 14:47 requirements.txt drwxrwxr-x 2 test test 80 Dec 20 14:47 tests -rw-rw-r-- 1 test test 213 Dec 20 14:47 tox.ini drwxrwxr-x 2 test test 80 Dec 20 14:46 app drwxrwxr-x 5 test test 140 Dec 20 14:46 venv
保存我们的作品
现在您可以节省网络应用程序的开发。
[test@ubuntu ~] cd app/ && ls -lh app/ total 8.0K -rw-rw-r-- 1 test test 162 Dec 20 14:46 __init__.py -rw-rw-r-- 1 test test 204 Dec 20 14:46 __main__.py [test@ubuntu ~] vim app/core.py
测试环境
用docker模拟你的生产环境:
from flask import Flask app = Flask(__name__) @app.route("/") def hello_world(): return "<p>Wow, this is my app!</p>"
结果是一样的:
使用 make 构建管道
现在,下次开发后,您可以通过Makefile使用管道:
[test@ubuntu app] vim app/__main__.py
在 PyPi 上发布包
现在,如果您愿意,您就可以在 PyPi 上发布 Python 包了:
#! /usr/bin/env python3 # -*- encoding: utf-8 -*- # vim: se ts=4 et syn=python: # Generated by psp (https://github.com/MatteoGuadrini/psp) from .__init__ import __version__ print(f'app {__version__}') from .core import app app.run(debug=True)
结论
不到五分钟,您就创建了一个 Python 项目,其中包本身的开发是您唯一需要担心的事情。
本文使用的工具:
psp:存储库 -- 文档
git: 存储库 -- 文档
docker: 存储库 -- 文档
make: 存储库 -- 文档
python: 存储库 -- 文档
以上是如何在 inutes 中创建自己的 Python 项目的详细内容。更多信息请关注PHP中文网其他相关文章!

在Python中实现工厂模式可以通过创建一个统一的接口来创建不同类型的对象。具体步骤如下:1.定义一个基础类和多个继承类,如Vehicle、Car、Plane和Train。2.创建一个工厂类VehicleFactory,使用create_vehicle方法根据类型参数返回相应的对象实例。3.通过工厂类实例化对象,如my_car=factory.create_vehicle("car","Tesla")。这种模式提高了代码的可扩展性和可维护性,但需注意其复杂

在Python中,r或R前缀用于定义原始字符串,忽略所有转义字符,让字符串按字面意思解释。1)适用于处理正则表达式和文件路径,避免转义字符误解。2)不适用于需要保留转义字符的情况,如换行符。使用时需谨慎检查,以防意外的输出。

在Python中,__del__方法是对象的析构函数,用于清理资源。1)不确定的执行时间:依赖垃圾回收机制。2)循环引用:可能导致无法及时调用,使用weakref模块处理。3)异常处理:在__del__中抛出的异常可能被忽略,使用try-except块捕获。4)资源管理的最佳实践:推荐使用with语句和上下文管理器管理资源。

pop()函数在Python中用于从列表中移除并返回指定位置的元素。1)不指定索引时,pop()默认移除并返回列表的最后一个元素。2)指定索引时,pop()移除并返回该索引位置的元素。3)使用时需注意索引错误、性能问题、替代方法和列表的可变性。

Python进行图像处理主要使用Pillow和OpenCV两大库。Pillow适合简单图像处理,如加水印,代码简洁易用;OpenCV适用于复杂图像处理和计算机视觉,如边缘检测,性能优越但需注意内存管理。

在Python中实现PCA可以通过手动编写代码或使用scikit-learn库。手动实现PCA包括以下步骤:1)中心化数据,2)计算协方差矩阵,3)计算特征值和特征向量,4)排序并选择主成分,5)投影数据到新空间。手动实现有助于深入理解算法,但scikit-learn提供更便捷的功能。

在Python中计算对数是一件非常简单却又充满趣味的事情。让我们从最基本的问题开始:怎样用Python计算对数?用Python计算对数的基本方法Python的math模块提供了计算对数的函数。让我们来看一个简单的例子:importmath#计算自然对数(底数为e)x=10natural_log=math.log(x)print(f"自然对数log({x})={natural_log}")#计算以10为底的对数log_base_10=math.log10(x)pri

要在Python中实现线性回归,我们可以从多个角度出发。这不仅仅是一个简单的函数调用,而是涉及到统计学、数学优化和机器学习的综合应用。让我们深入探讨一下这个过程。在Python中实现线性回归最常见的方法是使用scikit-learn库,它提供了简便且高效的工具。然而,如果我们想要更深入地理解线性回归的原理和实现细节,我们也可以从头开始编写自己的线性回归算法。使用scikit-learn实现线性回归scikit-learn库封装了线性回归的实现,使得我们可以轻松地进行建模和预测。下面是一个使用sc


热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

Video Face Swap
使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

热工具

禅工作室 13.0.1
功能强大的PHP集成开发环境

WebStorm Mac版
好用的JavaScript开发工具

SublimeText3 英文版
推荐:为Win版本,支持代码提示!

SublimeText3汉化版
中文版,非常好用

PhpStorm Mac 版本
最新(2018.2.1 )专业的PHP集成开发工具