0%

Mosh的Python课程笔记(10)--Python Package Index (Pypi)

Mosh的课程网址

Python标准库不一定够用。所以有:

pypi官网

Pip

1
2
3
4
5
6
pip install requests				(安装包)
pip list (查看已安装列表)
pip install requests==2.9.0 (安装早前版本的包)
pip install requests==2.9.* (安装早前版本中符合条件的最近的包)
pip install requests~=2.9.0 (同上)
pip uninstall requests (卸载)

使用

1
2
3
4
import requests

response = requests.get("https://baidu.com")
print(response)

输出:

<Response [200]>

200表示成功。

Virtual Environments

创建虚拟环境:

1
> python -m venv env

可以看到当前目录下有一个env文件夹,里面有个pyvenv.cfg,内容如下:

home = D:\Python39
include-system-site-packages = false
version = 3.9.4

进入虚拟环境:

1
> env\Scripts\activate.bat

退出虚拟环境:

1
> deactivate

Pipenv

先安装:

1
> pip install pipenv

查看虚拟环境在哪(一般不在当前工作目录下,为了节省空间):

1
> pipenv --venv

进入虚拟环境:

1
> pipenv shell

退出虚拟环境:

1
> exit

Virtual Environments in VSCode

查看虚拟环境在哪:

1
> pipenv --venv

得到路径: C:/Users/11405/.virtualenvs/HelloWorldBjQZ8Ory

在VSCode中,File→Preference→settings,打开settings.json,改这两项(没有就自己加):

1
2
3
4
"python.pythonPath": "C:/Users/11405/.virtualenvs/HelloWorldBjQZ8Ory/Scripts/python.exe",
"code-runner.executorMap": {
"python": "C:/Users/11405/.virtualenvs/HelloWorldBjQZ8Ory/Scripts/python.exe",
}

点击VSCode左下角,然后选择pipenv为解释器,即可。

Pipfile

在用pipenv创建虚拟环境时,当前目录(不是虚拟环境所在目录)下会生成两个文件:

Pipfile

Pipfile.lock

Pipfile文件:

[[source]]
url = “https://pypi.org/simple
verify_ssl = true
name = “pypi”

[packages]
requests = “*”

[dev-packages]
pylint = “*”

[requires]
python_version = “3.9”

Pipfile.lock是一个json文件,存了所有包的版本,所以换一台机器跑这个代码,依赖的还是这些版本的包,就不会出问题。

在另一台机器,只要:

1
> pipenv install

就会根据Pipfile创建一样的环境

1
> pipenv install --ignore-pipfile

就会根据Pipfile.lock安装依赖包。

Managing the Dependencies

可以用

1
> pipenv graph

看已安装的包及其依赖项。

卸载某个包后,再用上述命令查看,会发现依赖项还在(因为这些依赖项可能在别的地方有用的)。

更新包和依赖项(想安装最新的,就改Pipfile中的版本号为*):

1
> pipenv update requests

更新所有包的依赖项:

1
> pipenv update --outdated

Publishing Packages

在pypi官网上注册一个账号(记得激活邮箱)。

然后安装:

1
> pip install setuptools wheel twine

新建一个项目,包含 stonepdf,test(单元测试),data(各种数据) 三个文件夹。

需要以下文件:

  1. LICENSE:到 https://choosealicense.com/ copy一个

  2. README.md:介绍你的项目

  3. setup.py

1
2
3
4
5
6
7
8
9
10
11
# setup.py
import setuptools
import setuptools
from pathlib import Path

setuptools.setup(
name="stonepdf",
version=1.0,
long_description=Path("README.md").read_text(),
packages=setuptools.find_packages(exclude=["tests", "data"]) # 忽略这两个
)

然后运行(sdist表示source distribution, bdist表示built distribution):

1
> python setup.py sdist bdist_wheel

然后上传:

1
> twine upload dist/*

*表示上传dist目录下所有文件。

然后就可以像用其他包一样用我们的包啦。

Docstrings

其他人提供的module在VSCode中有许多提示性信息显示出来,这就需要Docstrings。

比如(用””” “””包含的部分):

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
""" This module provides functions to convert a PDF to text. """


class Converter:
""" A simple converter for converting PDFs to text. """

def convert(self, path):
"""
Convert the given PDF to text.

Parameters:
path (str): The path to a PDF file.

Returns:
str: The content of the PDF file as text.
"""

print("pdf2text")

这些信息在 VSCode 调用这些 module 的 method、class 时会显示出来,便于别人使用。

003

Pydoc

1
2
3
4
> pydoc math
> pydoc stonepdf.pdf2text
> pydoc -w stonepdf.pdf2text
> pydoc -p 1234

查看包的介绍文件。-w在html中显示。-p会提供网址。

在 Windows 用:

1
> python -m pydoc math

其余同理。