第一次编写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