【软件工具-python】常用的 Python 包

常用的 Python 包

一、

在使用 Python 3.6 开发时,通常会安装一些常用的 Python 包,这些包涵盖了各种功能,如网络请求、数据处理、科学计算、数据库操作、Web 开发等。以下是一些常用的 Python 包:

1. 网络请求和 API 交互

  • requests:用于发送 HTTP 请求,处理 API 交互。

    pip install requests
    
  • httpx:支持异步 HTTP 请求的库,功能比 requests 更强大。

    pip install httpx
    

2. 数据处理

  • pandas:强大的数据处理和分析库,常用于处理表格数据。

    pip install pandas
    
  • numpy:用于数值计算的库,提供高效的数组操作和数学函数。

    pip install numpy
    
  • matplotlib:绘制图表和可视化数据的库。

    pip install matplotlib
    
  • scipy:用于科学计算和数值分析,扩展了 numpy 的功能。

    pip install scipy
    

3. 数据库操作

  • SQLAlchemy:用于数据库操作的 ORM 库,支持多种数据库。

    pip install SQLAlchemy
    
  • pymysql:用于与 MySQL 数据库交互的库。

    pip install pymysql
    
  • psycopg2:用于与 PostgreSQL 数据库交互的库。

    pip install psycopg2
    
  • sqlite3:Python 标准库自带的 SQLite 数据库接口,无需安装。

4. Web 开发

  • Django:一个强大的 Web 框架,适合快速开发 Web 应用。

    pip install django
    
  • Flask:轻量级 Web 框架,适合构建小型 Web 应用或微服务。

    pip install flask
    
  • fastapi:用于构建现代 Web API 的快速框架,支持异步编程。

    pip install fastapi
    

5. 测试

  • pytest:一个功能强大的测试框架,支持单元测试、功能测试等。

    pip install pytest
    
  • unittest:Python 标准库自带的测试框架,无需安装。

6. 虚拟环境管理

  • virtualenv:创建隔离的 Python 环境,管理项目依赖。

    pip install virtualenv
    
  • pipenv:结合了 pipvirtualenv 的功能,用于管理项目依赖和虚拟环境。

    pip install pipenv
    

7. 日志和调试

  • loguru:用于日志记录的库,简化了 Python 中的日志处理。

    pip install loguru
    
  • ipdb:交互式调试器,基于 pdb,提供更友好的调试体验。

    pip install ipdb
    

8. 并行和异步编程

  • concurrent.futures:标准库中自带的并发编程模块,无需安装。

  • asyncio:用于编写异步代码的标准库模块,无需安装。

  • celery:一个异步任务队列库,适合处理分布式任务。

    pip install celery
    

9. 机器学习和人工智能

  • scikit-learn:用于机器学习的库,包含常用的算法和工具。

    pip install scikit-learn
    
  • tensorflow:谷歌开发的深度学习框架,广泛用于神经网络和深度学习研究。

    pip install tensorflow
    
  • keras:一个高级神经网络 API,运行在 TensorFlow 之上。

    pip install keras
    
  • pytorch:一个深度学习框架,广泛用于研究和生产环境。

    pip install torch
    

10. 其他常用工具

  • beautifulsoup4:用于解析 HTML 和 XML 的库,常用于 Web 抓取。

    pip install beautifulsoup4
    
  • lxml:一个快速的 HTML 和 XML 解析器。

    pip install lxml
    
  • openpyxl:用于读写 Excel 文件的库。

    pip install openpyxl
    

总结

根据你的开发需求,你可以选择合适的 Python 包进行安装和使用。上述列出的包涵盖了大多数常见的开发任务,可以满足绝大多数的编程需求。安装这些包可以大大提高你的开发效率。

二、

关于 pytest 相关的 Python 包,以下是一些常用的扩展包和插件,可以帮助你更好地进行测试工作。pytest 是一个非常强大且灵活的测试框架,它有很多扩展和插件,可以用于不同类型的测试需求。

1. 基础安装

首先,确保你已经安装了 pytest

pip install pytest

2. 常用插件

2.1 pytest-cov:代码覆盖率报告

pytest-cov 是一个用于生成代码覆盖率报告的插件。它可以帮助你了解测试覆盖了多少代码。

pip install pytest-cov

使用方式:

pytest --cov=your_package_name
2.2 pytest-xdist:并行测试

pytest-xdist 允许你在多个 CPU 核心或机器上并行运行测试,极大地加快了测试速度。

pip install pytest-xdist

使用方式:

pytest -n auto  # 自动检测 CPU 核心数并并行运行测试
2.3 pytest-mock:模拟对象

pytest-mock 是一个用于集成 unittest.mock 的插件,它简化了模拟对象和函数的过程,适合在测试中使用 mock 对象。

pip install pytest-mock

使用方式:

def test_function(mocker):
    mock = mocker.patch('module.function')
    mock.return_value = "mocked!"
    assert module.function() == "mocked!"
2.4 pytest-django:Django 测试集成

pytest-django 是 Django 项目的一个插件,提供了对 Django 测试框架的无缝集成。

pip install pytest-django

使用方式:

在你的项目根目录下创建 pytest.ini 文件,并添加 Django 的设置:

[pytest]
DJANGO_SETTINGS_MODULE = your_project.settings

然后运行 pytest,它会自动识别 Django 测试。

2.5 pytest-asyncio:异步测试

pytest-asyncio 用于测试异步代码的插件,它可以让你在 pytest 中轻松编写和运行 async/await 测试。

pip install pytest-asyncio

使用方式:

import pytest
import asyncio

@pytest.mark.asyncio
async def test_async_function():
    await asyncio.sleep(1)
    assert True
2.6 pytest-html:生成 HTML 测试报告

pytest-html 可以帮助你生成详细的 HTML 测试报告,适合在测试结果需要以报告形式展示的情况下使用。

pip install pytest-html

使用方式:

pytest --html=report.html
2.7 pytest-flask:Flask 测试集成

pytest-flask 是 Flask 项目的一个插件,简化了 Flask 应用程序的测试过程。

pip install pytest-flask

使用方式:

import pytest
from myapp import create_app

@pytest.fixture
def app():
    app = create_app()
    return app

def test_home_page(client):
    response = client.get('/')
    assert response.status_code == 200
2.8 pytest-faker:生成假数据

pytest-faker 提供了 faker 库的集成,可以在测试中轻松生成假数据。

pip install pytest-faker

使用方式:

def test_with_faker(faker):
    name = faker.name()
    assert isinstance(name, str)
2.9 pytest-bdd:行为驱动开发(BDD)

pytest-bdd 支持行为驱动开发(BDD),可以让你使用类似 Gherkin 的语法编写测试。

pip install pytest-bdd

使用方式:

from pytest_bdd import scenario, given, when, then

@scenario('test.feature', 'Test scenario')
def test_scenario():
    pass

@given('some initial condition')
def initial_condition():
    pass

@when('an action is performed')
def perform_action():
    pass

@then('a result is expected')
def expected_result():
    pass

3. 其他有用的插件

  • pytest-randomly:随机化测试执行顺序,帮助发现潜在的依赖问题。

    pip install pytest-randomly
    
  • pytest-timeout:为测试用例设置超时时间,防止测试无限制地运行。

    pip install pytest-timeout
    
  • pytest-sugar:美化 pytest 的输出,使测试结果更易读。

    pip install pytest-sugar
    

4. 常用的测试实用工具

  • hypothesis:基于属性的测试工具,可以生成各种测试数据,帮助发现隐藏的 bug。

    pip install hypothesis
    
  • tox:用于自动化测试的工具,可以在多个 Python 环境中运行测试。

    pip install tox
    

总结

  • pytest 是一个强大的测试框架,配合各种插件可以处理从简单单元测试到复杂的异步测试、Web 测试和 BDD 测试等各种需求
  • 常用的插件如 pytest-covpytest-xdistpytest-mock 等可以增强 pytest 的功能

这些插件可以根据你的项目需求进行选择和安装,从而构建一个强大的测试环境。

三、

在 CentOS 系统中同时存在 Python 2 和 Python 3 的情况下,通常需要区分 pip 命令,以确保安装的模块与正确的 Python 版本对应。默认情况下:

  • pip 通常与 Python 2 绑定,即 pip 安装的包会被安装到 Python 2 的环境中。
  • pip3 通常与 Python 3 绑定,即 pip3 安装的包会被安装到 Python 3 的环境中。

1. 使用 pip3 命令

要为 Python 3.6 安装模块,应该使用 pip3 命令:

pip3 install package_name

例如,安装 requests 包:

pip3 install requests

2. 指定具体的 Python 解释器

如果你不确定 pippip3 是否正确指向所需的 Python 版本,可以使用 Python 解释器直接调用 pip 模块:

python3.6 -m pip install package_name

这会确保 pip 安装的包与指定的 Python 解释器对应。

3. 手动下载和安装模块

如果你无法使用 pip 或需要手动下载并安装模块,可以通过以下方式操作:

3.1 使用 pip download 命令下载模块

在有网络连接的环境中,使用 pip 下载模块及其依赖项:

pip3 download package_name

这会将 package_name 及其依赖项下载为 .whl.tar.gz 文件。

你可以使用 --no-deps 选项来仅下载特定的包,而不包括依赖项:

pip3 download --no-deps package_name
3.2 手动安装下载的模块

将下载的包传输到目标系统后,可以使用以下命令手动安装:

pip3 install package_name.whl

或者,如果你下载的是 .tar.gz 文件,可以先解压然后安装:

tar xzf package_name.tar.gz
cd package_name
python3.6 setup.py install
3.3 离线安装

如果你在离线系统上,下载好 .whl 文件或 .tar.gz 文件后,可以使用 pip 离线安装:

pip3 install package_name.whl
3.4 使用 setuptools

对于许多 Python 包,你也可以通过 setuptools 进行安装。你需要下载包的源码并解压,然后运行:

python3.6 setup.py install

4. 使用操作系统的包管理器(有限的选择)

在 CentOS 上,可以通过 yum 安装一些常见的 Python 包,但这仅适用于部分库,且大多是针对 Python 2 的:

sudo yum install python3-requests

这些包会自动安装到正确的 Python 版本中。

5. 使用 virtualenvvenv 创建隔离环境

如果你不希望影响系统的 Python 环境,可以使用 virtualenvvenv 创建一个隔离的虚拟环境,然后在其中使用 pip 安装模块:

python3.6 -m venv myenv
source myenv/bin/activate
pip install package_name

这样所有的包都会安装在虚拟环境中,而不会影响系统级 Python。

总结

  • 使用 pip3:这是为 Python 3.6 安装包的最常用方法。
  • 使用 Python 解释器调用 pip:可以确保正确的 Python 版本使用正确的 pip
  • 手动下载并安装包:适用于没有网络连接的系统。
  • 创建虚拟环境:使用 venvvirtualenv 创建隔离的环境,避免系统包冲突。

通过这些方法,你可以在 CentOS 系统上管理 Python 2 和 Python 3 的包,并确保它们互不干扰。

四、

sudo yumdownloader --resolve python3 命令的作用是下载 python3 包及其依赖项,而不会自动包含通过 pip 安装的模块。这是因为 yumdownloader 仅处理通过 yum 安装的 RPM 包,而 pip 安装的模块通常是通过 Python 包管理器从 Python Package Index (PyPI) 下载并安装的,而不是 RPM 包。

总结 yumdownloader 的行为:

  • 下载 python3 及其依赖项yumdownloader --resolve python3 会下载 python3 包及其在 RPM 库中的依赖项,并保存到指定的目录中。
  • 不会下载 pip 模块pip 安装的模块不是 RPM 包的一部分,因此 yumdownloader 不会下载这些模块。

如果你需要离线安装通过 pip 安装的模块

  1. 在联网环境中使用 pip download 下载模块
    你可以使用 pip download 命令手动下载你需要的模块及其依赖项,这样可以在离线环境中使用。

    mkdir pip-packages
    pip3 download -d pip-packages requests numpy pandas
    

    上述命令会将 requestsnumpypandas 及其依赖项下载到 pip-packages 目录中。

  2. pip 模块与 yumdownloader 的包一起传输
    将通过 yumdownloaderpip download 下载的所有文件一起打包,并传输到离线系统。

  3. 在离线系统上安装
    在离线系统上,首先使用 yum localinstall 安装 yumdownloader 下载的 RPM 包,然后使用 pip install 命令从本地文件夹安装通过 pip download 下载的包:

    pip3 install --no-index --find-links=pip-packages requests numpy pandas
    

    这会从 pip-packages 目录中安装指定的模块及其依赖项,而不需要访问互联网。

总结

  • yumdownloader 仅下载 yum 包及其依赖项,不包括 pip 安装的模块。
  • 要离线安装 pip 模块,你需要使用 pip download 手动下载这些模块及其依赖项。
  • 将通过 yumdownloaderpip download 下载的包一起传输到离线系统,并分别使用 yum localinstallpip install 命令安装。

通过这种方法,你可以在离线环境中完整地安装 Python 及其依赖项和模块。

五、

python3.6 -m pip install pytest
WARNING: Running pip install with root privileges is generally not a good idea. Try main.py install --user instead.
Collecting pytest
Downloading https://files.pythonhosted.org/packages/38/93/c7c0bd1e932b287fb948eb9ce5a3d6307c9fc619db1e199f8c8bc5dad95f/pytest-7.0.1-py3-none-any.whl (296kB)
20% |██████▋ | 61kB 3.5kB/s eta 0:01:08Exception:
Traceback (most recent call last):
File “/usr/lib/python3.6/site-packages/pip/_vendor/urllib3/response.py”, line 302, in _error_catcher
yield
File “/usr/lib/python3.6/site-packages/pip/_vendor/urllib3/response.py”, line 384, in read
data = self._fp.read(amt)
File “/usr/lib/python3.6/site-packages/pip/_vendor/cachecontrol/filewrapper.py”, line 60, in read
data = self.__fp.read(amt)
File “/usr/lib64/python3.6/http/client.py”, line 459, in read
n = self.readinto(b)
File “/usr/lib64/python3.6/http/client.py”, line 503, in readinto
n = self.fp.readinto(b)
File “/usr/lib64/python3.6/socket.py”, line 586, in readinto
return self._sock.recv_into(b)
File “/usr/lib64/python3.6/ssl.py”, line 1005, in recv_into
return self.read(nbytes, buffer)
File “/usr/lib64/python3.6/ssl.py”, line 867, in read
return self._sslobj.read(len, buffer)
File “/usr/lib64/python3.6/ssl.py”, line 590, in read
v = self._sslobj.read(len, buffer)
socket.timeout: The read operation timed out

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File “/usr/lib/python3.6/site-packages/pip/basecommand.py”, line 215, in main
status = self.run(options, args)
File “/usr/lib/python3.6/site-packages/pip/commands/install.py”, line 346, in run
requirement_set.prepare_files(finder)
File “/usr/lib/python3.6/site-packages/pip/req/req_set.py”, line 381, in prepare_files
ignore_dependencies=self.ignore_dependencies))
File “/usr/lib/python3.6/site-packages/pip/req/req_set.py”, line 623, in _prepare_file
session=self.session, hashes=hashes)
File “/usr/lib/python3.6/site-packages/pip/download.py”, line 821, in unpack_url
hashes=hashes
File “/usr/lib/python3.6/site-packages/pip/download.py”, line 659, in unpack_http_url
hashes)
File “/usr/lib/python3.6/site-packages/pip/download.py”, line 882, in _download_http_url
_download_url(resp, link, content_file, hashes)
File “/usr/lib/python3.6/site-packages/pip/download.py”, line 603, in _download_url
hashes.check_against_chunks(downloaded_chunks)
File “/usr/lib/python3.6/site-packages/pip/utils/hashes.py”, line 46, in check_against_chunks
for chunk in chunks:
File “/usr/lib/python3.6/site-packages/pip/download.py”, line 571, in written_chunks
for chunk in chunks:
File “/usr/lib/python3.6/site-packages/pip/utils/ui.py”, line 139, in iter
for x in it:
File “/usr/lib/python3.6/site-packages/pip/download.py”, line 560, in resp_read
decode_content=False):
File “/usr/lib/python3.6/site-packages/pip/_vendor/urllib3/response.py”, line 436, in stream
data = self.read(amt=amt, decode_content=decode_content)
File “/usr/lib/python3.6/site-packages/pip/_vendor/urllib3/response.py”, line 401, in read
raise IncompleteRead(self._fp_bytes_read, self.length_remaining)
File “/usr/lib64/python3.6/contextlib.py”, line 99, in exit
self.gen.throw(type, value, traceback)
File “/usr/lib/python3.6/site-packages/pip/_vendor/urllib3/response.py”, line 307, in _error_catcher
raise ReadTimeoutError(self._pool, None, ‘Read timed out.’)
pip._vendor.urllib3.exceptions.ReadTimeoutError: HTTPSConnectionPool(host=‘files.pythonhosted.org’, port=443): Read timed out.
这个错误表明 pip 在尝试下载 pytest 包时,出现了网络连接超时的问题。这通常是由于网络不稳定、下载速度慢或其他网络问题导致的。为了绕过这个问题,你可以尝试以下几种方法:

1. 增加 pip 的超时时间

你可以通过设置 --timeout 参数来增加 pip 的超时时间。例如,将超时时间设置为 100 秒:

python3.6 -m pip install pytest --timeout 100

2. 使用国内镜像源

如果你在中国大陆地区,默认的 pip 下载源速度可能较慢,可以尝试使用国内的镜像源,例如:

  • 阿里云: https://mirrors.aliyun.com/pypi/simple/
  • 清华大学: https://pypi.tuna.tsinghua.edu.cn/simple/

你可以使用以下命令指定镜像源下载 pytest

python3.6 -m pip install pytest -i https://mirrors.aliyun.com/pypi/simple/

或者

python3.6 -m pip install pytest -i https://pypi.tuna.tsinghua.edu.cn/simple/

3. 使用 --user 选项安装

pip 提示你使用 --user 选项安装软件包,这样可以避免使用 root 权限进行安装,从而减少潜在的系统权限问题:

python3.6 -m pip install pytest --user

4. 手动下载并离线安装

你可以在网络状况良好的环境中手动下载 pytest 包,然后将其传输到你的目标系统进行离线安装。

4.1 手动下载 pytest

在有网络的系统上,使用以下命令下载 pytest 及其依赖项:

pip3 download pytest

这会下载所有需要的 .whl 文件到当前目录。

4.2 将文件传输到目标系统

将下载的文件传输到需要安装的系统上。

4.3 离线安装

在目标系统上使用以下命令安装 pytest

python3.6 -m pip install pytest --no-index --find-links=/path/to/downloaded/files

/path/to/downloaded/files 替换为你下载的文件所在的目录路径。

5. 检查网络连接

确保你的网络连接正常,特别是在你使用的是虚拟机或远程连接的情况下,检查是否存在网络问题或防火墙配置问题。

总结

  • 尝试增加 pip 的超时时间,或者使用国内的镜像源下载。
  • 通过手动下载 pytest 并进行离线安装,避免网络问题。
  • 检查网络连接,确保其稳定性。

通过这些方法,你应该可以绕过 pip 下载超时的问题,并成功安装 pytest

七、

Allure 是一个非常流行的测试报告框架,它可以与 pytestJUnitTestNG 等多种测试框架集成,生成美观且详细的测试报告。如果你正在使用 pytest 进行测试,可以使用 allure-pytest 插件来生成 Allure 格式的测试报告。

以下是与 Allure 相关的模块和工具的介绍,以及如何在 Python 项目中使用它们。

1. 安装 Allure 相关模块

1.1 安装 allure-pytest

要在 pytest 中使用 Allure 生成报告,你需要安装 allure-pytest 插件。

pip install allure-pytest
1.2 安装 Allure 命令行工具

Allure 生成的报告需要通过 Allure 命令行工具进行处理和展示。你可以从以下两种方式安装 Allure 命令行工具:

  • 直接下载二进制文件

    1. 访问 Allure Releases 页面
    2. 下载最新版本的 allure 命令行工具包(如 allure-2.13.9.zip)。
    3. 解压缩下载的文件,并将 bin 目录添加到你的 PATH 环境变量中。
  • 使用 Homebrew(仅限 macOS 和 Linux)
    如果你在 macOS 或 Linux 上工作,也可以通过 Homebrew 安装:

    brew install allure
    
1.3 验证安装

安装完成后,你可以运行以下命令来验证 Allure 是否安装成功:

allure --version

2. 使用 Allure 生成测试报告

2.1 在 pytest 中生成 Allure 报告

在运行 pytest 时,你可以使用 --alluredir 选项指定生成报告的目录:

pytest --alluredir=./allure-results

这个命令会在 ./allure-results 目录下生成一组 Allure 格式的测试结果文件。

2.2 生成 HTML 报告

使用 Allure 命令行工具将生成的测试结果转换为 HTML 报告:

allure serve ./allure-results

这个命令会启动一个本地服务器,自动在浏览器中打开生成的 Allure 报告。

如果你只想生成静态 HTML 文件而不启动服务器,可以使用以下命令:

allure generate ./allure-results -o ./allure-report

生成的报告将保存在 ./allure-report 目录中,你可以将这个目录中的文件上传到任何静态文件服务器进行展示。

3. Allure 特性

Allure 提供了丰富的特性,使得测试报告更加详细和可读。以下是一些常用的 Allure 特性:

  • 步骤记录:使用 @allure.step 注解来记录测试中的步骤。

    import allure
    
    @allure.step("Step description")
    def step_function():
        pass
    
    def test_example():
        step_function()
    
  • 附件:在测试失败时,自动或手动添加截图、日志等作为附件。

    import allure
    
    def test_example():
        with open('example.png', 'rb') as image:
            allure.attach(image.read(), name='Screenshot', attachment_type=allure.attachment_type.PNG)
    
  • 标签和特性:通过 @allure.feature@allure.story 等标签组织和分类测试用例。

    import allure
    
    @allure.feature('Login')
    @allure.story('User Login')
    def test_login():
        pass
    
  • 动态标题:可以在测试执行时动态地设置测试用例的标题。

    import allure
    
    def test_dynamic_title():
        allure.dynamic.title("This is a dynamic title")
    

4. Allure 与 CI 集成

Allure 可以与 CI/CD 工具(如 Jenkins、GitLab CI 等)集成,自动生成和发布测试报告。

  • Jenkins:你可以使用 Allure Jenkins 插件来自动化生成测试报告。插件可以直接解析 allure-results 目录,并生成 Allure 报告。

  • GitLab CI:在 GitLab CI 中,可以在 .gitlab-ci.yml 中配置 Allure 生成报告并作为 CI 结果的一部分。

5. 其他有用的 Allure 插件

  • allure-python-commons:这是 Allure 框架的一个核心库,allure-pytest 基于这个库构建。
  • allure-behave:用于与 Behave(BDD 测试框架)集成的插件。

总结

  • allure-pytest:用于在 pytest 中生成 Allure 报告的插件。
  • Allure 命令行工具:用于处理和展示 Allure 报告。
  • 步骤、附件、标签和动态标题:增强 Allure 报告的可读性和详细程度。
  • 与 CI 集成:可以与 Jenkins、GitLab CI 等 CI/CD 工具集成,实现自动化报告生成和展示。

通过这些工具和插件,你可以生成美观的测试报告,并提高测试结果的可视化和可读性。

  • 8
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

阿寻寻

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值