第一次编写Python的Pull Request,我学到了一些东西

由于偶然之间需要对 Azure Functions 的 Kafka 扩展进行版本升级和改进,尽管我通常不碰 Python,但我也不得不更新其库作为这个过程的一部分。

由于对语言规范和工具了解甚少,我曾经遇到过一些困难,因此我想将所学之事记录下来。

    Kafka extension implementation #62

虚拟环境

从Python 3.4版本开始,它默认内置了一个名为Virtual Environment的机制。它的作用是在安装库时,为我们创建一个独立的环境。这与Ruby中的bundle或者node中的npm类似,都是用来管理库的机制。

具体而言,执行以下命令。

$ python -m venv .venv

然后,将创建一个名为.venv的目录。要激活venv,请执行以下命令。

$ source .venv/bin/activate

从现在开始安装库后,将会保存在.venv目录下,当.venv处于激活状态时,Python程序能够引用这些已安装的库。

安装.py

如果想要添加库,可以在setup.py中添加条目。这是我贡献的存储库。

$ python -m pip install -U -e ./[dev\]

使用这个命令,setup.py 的 extras_require 的 dev 部分也会被安装。此外,-U 表示升级,它会将包更新到最新版本。-e 表示可编辑,已安装的库将变为可编辑状态。通常情况下,它们不会被设置为可编辑的形式。当需要调试库或者查看源码时,建议添加 -e,这样你可以进行实验或者查看源代码。

设立.py

from setuptools import setup
from azure.functions import __version__


setup(
    name='azure-functions',
    version=__version__,
    description='Azure Functions for Python',
    long_description='Python support for Azure Functions is based on '
                     'Python3.[6|7|8], serverless hosting on Linux and the '
                     'Functions 2.0 and 3.0 runtime. This module provides the '
                     'rich binding definitions for Azure Functions for Python '
                     'apps.',
    author='Microsoft Corporation',
    author_email='azpysdkhelp@microsoft.com',
    classifiers=[
        'License :: OSI Approved :: MIT License',
        'Intended Audience :: Developers',
        'Programming Language :: Python :: 3',
        'Operating System :: Microsoft :: Windows',
        'Operating System :: POSIX',
        'Operating System :: MacOS :: MacOS X',
        'Environment :: Web Environment',
        'Development Status :: 5 - Production/Stable',
    ],
    license='MIT',
    packages=['azure.functions'],
    package_data={
        'azure.functions': ['py.typed']
    },
    extras_require={
        'dev': [
            'flake8~=3.7.9',
            'mypy',
            'pytest',
            'requests==2.*',
            'coverage'
        ]
    },
    include_package_data=True,
    test_suite='tests'
)

细毛

虽然我还没有试过,但是Python的Lint有一些特点,所以最好安装一个Linter。

    Linting Python in Visual Studio Code

以下是一种可能的中文释义:公共关系

第一次为Python提交推送请求

    Kafka extension implementation #62
广告
将在 10 秒后关闭
bannerAds