搜索
首页后端开发Python教程如何在 inutes 中创建自己的 Python 项目

为什么选择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 开发人员,那么你会使用其他常用工具。

按照顺序,您编写的每一段代码都遵循以下步骤:

  1. 将Python代码写入你的包
  2. 跟踪您的修改
  3. 测试您编写的所有代码
  4. 将您的代码放入您测试的环境中
  5. 将代码推送到远程存储库
  6. 构建您的分发包
  7. 将你的包上传到 PyPi

管道

代码中的每一个更改都可能会引入可能的错误。为了放弃这个,每次我们需要在正确的环境中测试自己的包时。

要做到这一点,除了 Python 本身之外还需要一些工具,比如 git、docker 和 make。

文档、许可证和其他通用文件

仅仅创建一个 Python 包并使其立即可供所有人使用是不够的。您还必须考虑如何记录它、向其他人简要解释它、许可它并解释如何集成到项目中。

这需要开发诸如 READMELICENSECODE_OF_CONDUCTCONTRIBUTING 等文件。
也许添加一个 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

结果是:

How to create own Python project in inutes

对包执行单元测试

现在还通过测试文件夹测试包上的 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>"

结果是一样的:
How to create own Python project in inutes

使用 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中文网其他相关文章!

声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
Python中如何实现工厂模式?Python中如何实现工厂模式?May 16, 2025 pm 12:39 PM

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

python中r是什么意思 python原始字符串前缀python中r是什么意思 python原始字符串前缀May 16, 2025 pm 12:36 PM

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

Python中如何使用__del__方法清理资源?Python中如何使用__del__方法清理资源?May 16, 2025 pm 12:33 PM

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

python中pop()函数的用法 python列表pop元素移除方法详解python中pop()函数的用法 python列表pop元素移除方法详解May 16, 2025 pm 12:30 PM

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

如何用Python进行图像处理?如何用Python进行图像处理?May 16, 2025 pm 12:27 PM

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

Python中怎样实现主成分分析?Python中怎样实现主成分分析?May 16, 2025 pm 12:24 PM

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

怎样用Python计算对数?怎样用Python计算对数?May 16, 2025 pm 12:21 PM

在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中如何实现线性回归?May 16, 2025 pm 12:18 PM

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

See all articles

热AI工具

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

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

热工具

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

WebStorm Mac版

WebStorm Mac版

好用的JavaScript开发工具

SublimeText3 英文版

SublimeText3 英文版

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

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

PhpStorm Mac 版本

PhpStorm Mac 版本

最新(2018.2.1 )专业的PHP集成开发工具