poetry安装,poet下载

poetry安装,poet下载

|

Python 一键安装全部依赖包

requirements.txt 用来记录项目所有的依赖包和版本号,只需要一个简单的 pip 命令就能完成。

生成的文件会像这个样子

然后就可以用

来一次性安装 requirements.txt 里面所有的依赖包,真是非常方便。

创建虚拟环境

激活虚拟环境

poetry 的工作方式就像 Node.js 里的 npm/yarn。

首先用 pip install poetry 来安装它,可以用 poetry new [name] 来生成新项目,或者在项目的根目录下面运行 poetry init 来初始化。

这样 poetry 会在这个项目里创建一个 pyproject.toml 的文件,就像 package.json 一样,里面记录了项目所有的依赖包版本信息。

poetry install 可以一键安装所有依赖包,还会生成 poetry.lock 文件,里面记录了这次安装时的依赖包。 poetry install --no-dev 可以只安装生产环境的包,不安装开发环境的包。

在 poetry add [name] 可以安装 Flask 到生产环境,比如 poetry add flask ,再加 --dev 参数, poetry add --dev flask 就会安装到开发环境。

poetry remove [name] 可以卸载依赖包, poetry show 可以显式安装好的包。

更多用法请查看 poetry 。

python - Poetry介绍

一、简介

Poetry 是一个Python 中的好用的包管理工具。在 Python 中,打包系统和依赖管理非常复杂:一个项目经常要同时创建多个文件,例如:

setup.py

requirements.txt

setup.cfg

MANIFEST.in

Pipfile

基于此, poetry 将所有的配置都放置在一个 toml 文件中,包括:依赖管理、构建、打包、发布等,可谓是简单方便。

二、安装

Poetry 要求 Python 版本为 2.7 或者 3.5+。Poetry 官方提供了一个脚本,可以快速方便地进行安装。

osx / linux / bashonwindows 安装:

curl -sSL | python -

windows powershell 安装:

(Invoke-WebRequest -Uri -UseBasicParsing).Content | python -

Poetry 会被安装在系统中的如下位置:

$HOME/.local/bin Unix系统

%APPDATA%\Python\Scripts Windows系统

然后把路径添加到系统变量 PATH 中,即可使用 poetry 命令调用:

poetry --version

卸载:

python install-poetry.py --uninstall

POETRY_UNINSTALL=1 python install-poetry.py

如果你想要改变安装的默认路径,可以设置 POETRY_HOME :

POETRY_HOME=/etc/poetry python install-poetry.py

除了官方的安装脚本,也可以使用 pipx 或者 pip 进行安装:

pipx install poetry

pipx upgrade poetry

pipx uninstall poetry

pip install --user poetry

更新:

poetry self update

三、基础使用

在已有项目中执行:

poetry init

该命令创建了一个pyproject.toml 文件。你可以手动修改 pyproject.toml 文件添加依赖,然后运行:

poetry install

也可以执行 add 命令安装具体某个模块并自动添加到 pyproject.toml:

$ poetry add xxxx

默认情况下,poetry会在 {cache-dir}/virtualenvs 下创建虚拟环境,你也可以手动修改该配置项,或者在 pyproject.toml 配置[virtualenvs.in-project] 在你的项目目录中创建虚拟环境。

你可以使用 run 命令在虚拟环境中运行脚本:

poetry run python your_script.py

或者直接激活你的虚拟环境,新建一个 shell 运行:

poetry shell

只安装dependencies :

poetry install --no-root

更新所有锁定版本的依赖:

poetry update

四、命令选项

全局选项:

--verbose (-v|vv|vvv): "-v" 正常输出, "-vv" 详细输出 "-vvv" debug

--help (-h) : 帮助信息

--quiet (-q) : 不输出任何信息

--ansi: 强制 ANSI 输出

--no-ansi: 禁止ANSI 输出

--version (-V): 显示版本

--no-interaction (-n): 禁止交互询问

NEW:

poetry new my-package

创建项目模板,项目结构如下所示:

my-package

├── pyproject.toml

├── README.md

├── my_package

│ └── init .py

└── tests

└── init .py

init:创建pyproject.toml文件 。

install:读取pyproject.toml并安装依赖,它具有如下这些选项:

--without: 忽略依赖

--with: 安装可选的依赖

--only: 只安装指定的依赖

--default: 只安装默认的依赖

--sync: 同步锁定的版本至环境中

--no-root: 不安装根依赖包

--dry-run: 输出操作但不执行

--extras (-E): 安装额外的包

update:升级包

poetry update

不指定任何包时,更新所有,也可以指定升级包:

poetry update requests toml

它具有如下选项:

--dry-run : 输出操作但不执行

--no-dev : 不按照开发依赖

--lock : 只更新锁定不安装

add: 添加依赖并安装

限制范围:

poetry add pendulum@^2.0.5

poetry add "pendulum=2.0.5"

它具有如下选项:

--group (-D): 分组

--editable (-e): 添加到编辑模式

--extras (-E): 添加额外的依赖

--optional: 添加至可选依赖

--python: 指定python版本

--platform: 指定操作系统

--source: 使用源名称安装

---allow-prereleases: 接受 prereleases 安装

--dry-run: 输出操作但不执行

--lock: 只更新锁定不安装

remove:移除依赖

它具有如下选项:

--group (-D): 分组

--dry-run : 输出操作但不执行

show:列出所有的可安装的包

如果你想看具体某个包的信息:

poetry show pendulum

name : pendulum

version : 1.4.2

description : Python datetimes made easy

dependencies:

--without: 忽略依赖

--with: 同时显示

--only: 只显示指定的依赖

--default: 只显示默认的

--no-dev: 不显示开发的依赖

--tree: 以树状形式显示

--latest (-l): 展示最新的版本

--outdated (-o): 显示最新版本,但仅适用于过时的软件包

build:构建

publish:发布

config:配置项

使用方法:

poetry config [options] [setting-key] [setting-value1] ... [setting-valueN]

它具有如下选项:

--unset: 删除配置项

--list: 展示现在的配置

run:在虚拟环境中执行命令

shell:激活虚拟环境

check:检查pyproject.toml文件

search:搜索远程包

lock:锁定版本

version:显示版本

export:导出锁定的文件为其他的格式

poetry export -f requirements.txt --output requirements.txt

它具有如下选项:

--format (-f): 转换的格式,暂时只支持requirements.txt

--output (-o): 输出文件名字

--dev: 包括开发的依赖

--extras (-E): 额外的依赖

--without-hashes: 忽略哈希

--with-credentials: 包括合格证书

env:与虚拟环境进行交互

cache:缓存

显示缓存列表:

poetry cache list

清除缓存:

poetry cache clear pypi --all

plugin:插件

安装插件:

poetry plugin add poetry-plugin

显示插件列表:

poetry plugin show

移除插件:

poetry plugin remove poetry-plugin

source: 仓库源

添加源:

poetry source add pypi-test

显示仓库源列表:

poetry source show

移除:

poetry source remove pypi-test

五、配置

你可以运行config命令进行配置,或者直接修改config.toml文件,这个文件通常位于:

macOS: ~/Library/Application Support/pypoetry

Windows: C:\Usersusername\AppData\Roaming\pypoetry

Unix~/.config/pypoetry

可以使用--local命令对具体项目进行配置:

poetry config virtualenvs.create false --local

配置项:

cache-dir缓存目录

installer.parallel并行安装

virtualenvs.create如果不存在,则新建一个虚拟环境

virtualenvs.in-project在项目根目录创建虚拟环境

virtualenvs.path虚拟环境路径

virtualenvs.options.always-copy复制源文件还是创建链接到虚拟环境

virtualenvs.options.system-site-packages虚拟环境获得系统包的权限

repositories.name设置一个新的可选仓库

六、依赖配置

依赖的配置有很多种写法:

版本限制:

尖括号:^1.2 代表 =1.2.0 2.0.0

波浪号:~1.2.3 代表 =1.2.3 1.3.0

星号:1.* 代表 =1.0.0 2.0.0

使用git仓库:

[tool.poetry.dependencies]

requests = { git = " " }

使用本地路径:

[tool.poetry.dependencies]

my-package = { path = "../my-package/", develop = false }

my-package = { path = "../my-package/dist/my-package-0.1.0.tar.gz" }

使用URL:

[tool.poetry.dependencies]

my-package = { url = " " }

python限制:

[tool.poetry.dependencies]

pathlib2 = { version = "^2.2", python = "~2.7" }

环境限制:

[tool.poetry.dependencies]

pathlib2 = { version = "^2.2", markers = "python_version ~= '2.7' or sys_platform == 'win32'" }

组合:

[tool.poetry.dependencies]

foo = [

{version = "=1.9", python = "^2.7"},

{version = "^2.0", python = "^3.4"}

]

如果限制很多,写成一行不方便阅读,可以写成多行:

[tool.poetry.group.dev.dependencies]

black = {version = "19.10b0", allow-prereleases = true, python = "^3.6", markers = "platform_python_implementation == 'CPython'"}

写成多行后:

[tool.poetry.group.dev.dependencies.black]

version = "19.10b0"

allow-prereleases = true

python = "^3.6"

markers = "platform_python_implementation == 'CPython'"

分组功能:

[tool.poetry.group.test.dependencies]

pytest = "^6.0.0"

pytest-mock = "*"

例如以上,就建立了一个test的组合的依赖。

下面这两种写法是等价的:

[tool.poetry.dev-dependencies]

pytest = "^6.0.0"

pytest-mock = "*"

或者:

[tool.poetry.group.dev.dependencies]

pytest = "^6.0.0"

pytest-mock = "*"

以上两种写法都声明了一个dev的组的依赖。

声明组合是可选的,这在具体的环境中有的特定的用途时很有用:

[tool.poetry.group.docs]

optional = true

[tool.poetry.group.docs.dependencies]

mkdocs = "*"

添加依赖到组中:

poetry add pytest --group test

同步依赖,只使用poetry.lock中的依赖,移除其他不是必须的依赖:

poetry install --sync

七、环境管理

Poetry可以为项目使用独立的虚拟环境,而不是使用系统安装的。

切换环境:

poetry env use /full/path/to/python

poetry env use python3.7

poetry env use system

显示当前激活的环境信息:

poetry env info

运行命令会输出如下信息:

Virtual environment

Python: 3.7.1

Implementation: CPython

Path: /path/to/poetry/cache/virtualenvs/test-O3eWbxRl-py3.7

Valid: True

System

Platform: darwin

OS: posix

Python: /path/to/main/python

列出所有的虚拟环境列表:

poetry env list

删除环境:

poetry env remove /full/path/to/python

poetry env remove python3.7

poetry env remove 3.7

poetry env remove test-O3eWbxRl-py3.7

高频英语近义词用法辨析

一. advise/persuade/suggest的用法区别

1. suggest

① 当"建议"解,可接名词、动名词和宾语从句,不能接不定式。

May I suggest going (to go 误) there by train?

我建议坐火车去那里如何?

② suggest还可接句型“to sb.+从句”。

I suggested to him that John (should) be fired.

我向他建议把约翰开除。

2. advice / advise

作"劝告,忠告"解,有下列四种用法:

advise sth.或doing sth.

advise sb. (not) to do sth.

advise sb. against sth.或doing sth.

advise(sb.) that sb.(should) do sth.

She advised prudence.

她劝告(我们)应谨慎从事。

He advised waiting till the proper time.

他劝告(我们)等到适当时机才行动。

I advised him (not) to do it now.

我劝他现在(不要)做此事。

I advised him against doing it now.

我劝他不要现在做此事。

I advised (him) that he (should) do it now.

我劝他现在就做此事。

advise后面加sb. (not) to do...,而suggest后面必须加sb.(或者sb.'s)doing...,当然两者都可以接宾语从句,注意宾语从句的动词形式必须是(should) (not) do...。如下面三个句子:

a.I advise my father to stop smoking.

b.I suggest my father( father's) stopping smoking.

c.I advise/suggest (that) my father (should) stop smoking.

3. persuade

后面接sb. to do...,它的特别之处是它表示结果,不表示动作,是"成功地劝说,说服"的意思。

I advise my father to stop smoking but I can't persuade him to.

我劝说我父亲戒烟,但是我没能说服成功。

此外advise与persuade之间可以转换,try to persuade=advise, manage to advise=persuade。

二. every和each的用法区别

1. each可作代词和形容词,而every只能用作形容词。如可以说each of these dictionaries或each one of these dictionaries, 但不能说every of these dictionaries, 该用every one of these dictionaries.

2. each可指两个或两个以上中间的每一个,而every只可指三个或三个以上中间的每一个,不能指两个中每一个.如:

可以说each of my eyes, 不可说every one of my eye,但可说every one of my toes(脚趾) .

3. each通常用来指若干固定数目中的每一个,而every往往指“任何一个”,如:

Each girl sitting over there is my student.

坐在那里的每一女孩子都是我的学生。

Every man must do his best.

人人都尽最大的努力。

4. every和not连用,即“every…not”或“not…every”构成部分否定,表示“并非每一个”的意思,each则无此结构.

5. every+ 基数词+ 复数名词=every+ 序数词+ 单数名词,作“每(多少)”解,但each不能用于这一结构中. 如: every three days 每三天或每隔两天,相当于 every third day.

6. every two days, every second day都作“每隔一天”解,但在实际应用中人们都用every other day来表示这一意思,every two days也有人讲,而every second day则用的很少。

7. 也可以说every few days, 相当于汉语的“隔些日子”.

8. each 可以与other构成固定的搭配,即each other意思为“彼此、相互、互相”的意思,而every则不能.

三. poem与poetry的用法区别

1. poem的意思是“诗”,为可数名词,可指具体的一首诗、两首诗、几首诗等;用作主语时,谓语动词的`数取决于poem的数(即poem为单数,谓语动词用单数;poem为复数,谓语动词用复数)。poet 诗人。如:

This poem is worth learning by heart.

这首诗是值得背诵的。

His poems have been compared to those of the English Romantics.

他的诗歌被拿来与英国浪漫主义诗歌相提并论。

2. poetry的意思也是“诗”,但为诗的总称,是不可数名词;用作主语时,谓语动词总是用单数。如:

This writer’s poetry reflects his love of nature.

该作者的诗反映出他热爱自然。

Poetry has been composed since ancient times.

从古时起人们就开始创作诗歌了。

Poetry serves to stimulate the mind.

诗歌能激发心灵。

四. attend / join / take part in 的用法区别

1. attend 指参加会议、婚礼、葬礼、典礼;去上课,上学,听报告等;句子的主语只是去听,去看,自己不定起积极作用。如:

He will attened an important meeting tomorrow.

他明天会出席一个很重要的会议。

2. join 指加入一某个党派,团体组织等,成为其中其成员之一,意为“参军、入团、入党”等。

和某人一起做某事,其结构为:join sb in (doing)sth 根据上下文,in (doing)sth 也可以省去。

She joined the Young Pioneers.

她加入了少先队员。

Will you join us in the discussion ?

你会加入我们的讨论吗?

3. take part in 指积极参加会议或群众性活动等,着重说明句子主语参加该项活动并在活动中发挥作用。

We often take part in physical labour.

我们经常参加体力劳动。

五. beautiful, pretty, good-looking, handsome的用法区别

1. beautiful

beautiful 表示“美”,可用于人或事物。用于人时,通常只用于形容女性或小孩,一般不用于男性。它表示的“美”主要指能“给感官以极大的快乐(giving great pleasure to the senses)”,它侧重从客观上表明一种接近理想状态的美,语气很强。如:

It’s a beautiful village.

那是个美丽的村庄。

She is a beautiful girl.

她是个美丽的女孩。

The film star is really beautiful.

这位电影明星的确很美。

2. pretty

pretty 主要表示“漂亮”、“俊俏”、“标致”等义,可用于人(主要是女性和小孩)或事物,语气比 beautiful 弱。它往往侧重从主观上评述某人或某物,含有“可爱”或“讨人喜欢”之意。如:

What a pretty dress!

多漂亮的连衣裙啊!

They have a pretty daughter.

他们有个漂亮的女儿。

She is not really beautiful, but she looks pretty when she smiles.

她其实长得并不美,但笑起来很好看。

注:偶尔用于男性,但通常带有贬义。

3. good-looking

good-looking 意为“好看的”,主要用于人(男人、女人或小孩),不常用于事物。如:

He (She) is good-looking.

他(她)长得很帅(漂亮)。

有时用于事物,但不多见。如:

He has a good-looking car (horse).

他有一辆(匹)好看的汽车(马)。

4. handsome

handsome 意为“英俊的”,主要用于男性,但有时也用于女性(一般只用于成年女性,不用于少女),意为“体态健美的”、“端庄稳重的”。如:

He is a handsome young man.

他是一个英俊的年轻人。

Do you discribe her as beautiful or handsome?

你是说她貌美还是说她健美?

有时可用于事物,但不多见。如:

It’s a handsome building.

那是栋漂亮的建筑。

六. repair, mend 与 fix 的用法区别

三个词都可以译为“修理”,但fix一词在美语中应用更为广泛。

1. repair的对象范围很广。常指大件或构造较复杂的事物,如钟表、收音机、汽车和机床等大型物体。或用于修筑堤坝、道路和建筑等。

I have to have my watch repaired.

我的表该修理了。

repair a road/ bridge

修理公路/桥梁

2. mend一般用于“修补”破损的东西,如衣服、鞋袜、伞和桌椅等整体物体上的裂缝、破洞。

Will you please mend the sleeve of my blouse?

请你把我衬衣的袖子补一下好吗?

3. fix一般用于“修理”构造较复杂的事物,如钟表、收音机、机器等。侧重于“安装”、“调整”。常用于美国口语中。

The workers are fixing the machine.

工人们在安装机器。

Have you had your watch fixed?

你已找人修你的表了吗?

七. genius / gift / talent 的用法区别

   三个词都有“天赋,才能”之意。

1. genius 程度最高,指“最全面的天赋” 也指“有天赋的人”。

Li Bai was a great genius.

李白是一个伟大的天才。

2. gift 侧重“天赋”

He has a gift for music.

他有音乐天赋。

3. talent n.才能,有才能的人

have a talent for 有...…的才能

talented adj. 有才能的

My sister has a talent for music.

我的姐姐有音乐天赋。

八. at last,finally与in the end的用法区别

1. finally可以放在句首,也可放在动词前。有两个用法:一是在列举事物或论点时,用来引出最后一项内容;二是用在句中动词前面,表示“等了好久才…”。如:

She put some soil in the box, then sowed the seed carefully, and then covered it with more soil.Finally she kept the box in the shade.

她在盒子里放些土,然后仔细地播种,之后再盖上一些土,最后她把盒子放在阴凉处。

We waited and waited, and the train finally arrived.

我们等了又等,火车终于来了。

Finally I’d like to thank you all for your coming .

最后我要感谢诸位的光临。(不能用at last)

Finally we finished the work. = We finally finished the work.

最后我们完成了这项工作。

2. in the end放在句首或句末,表示“经过许多变化、困难或捉摸不定的情况之后,某事才发生”,有时可与finally互相换用,其反义词是in the beginning,但in the end不能置于动词前。如:

We found that small village in the end.

我们终于找到了那个小村庄。

He tried several times,and in the end he succeeded.

他尝试过多次,最后成功了。

3. at last指经过,周折,等待,耽搁后的“最后,终于”得到所期待的结果,常常带有较浓厚的感情色彩。at last也可用来表示“等候或耽误了很多时间之后才……”,语气比较强烈。如:

At last , he passed the exam .

最后他终于通过了考试。

At last the work was done and he could rest.

最后工作完成了,他可以休息了。

She has come at last!

她总算来了。

He worked harder than before, and he passed the English examination at last.

他比以前学习更加努力,终于通过了英语考试。

九. laugh,laughing与laughter的用法区别

三者用作名词时,均表示“笑”,但有区别:

1. laugh 侧重指行为,是可数名词。如:

He answered with a laugh.

他笑着回答。

2. laughing侧重指笑的动作,是不可数名词。如:

He held his laughing.

他忍住了笑。

3. laughter 具有抽象或概括意义,是不可数名词 。如:

In this case there is no cause for laughter.

这没什么好笑的。

The room was full of laughter and happiness.

房间里充满了欢声笑语。

十. litter 和rubbish的用法区别

litter 和 rubbish 都可指“垃圾”,用作不可数名词。

rubbish 指“没用的东西(被扔或将要丢弃的无用的东西)”不可回收。

litter 指“(室内或公共场所)乱扔的废物(纸屑、不要的包装纸、废瓶等)”还可回收。

Throw the rubbish out.

把垃圾扔出去。

Pick up your litter after a picnic.

野餐后将废弃物收拾好。

mitmproxy_概述和使用_2021-10-14

一、本次接口自动化工具要用到的内容

1、用于公司没有接口文档,但是我还想知道所有的接口,做自动化

2、schedule可以做线上监控

3、mitmproxy+python用于自动抓取接口

4、jinjia2+flask+layui+多线程,用于前端网页,前台展示测试结果

5、argparse用于生成命令行操作

6、poetry打包,用于发布线上,用户安装使用

二、mitmproxy的好处

1、定制化高

2、维护成本低

3、用例扩展速度快

三、mtimproxy 安装方式

         安装方式

四、介绍mitmproxy一些常用方法:

def request(flow):

    # 获取请求对象    request = flow.request

    # 实例化输出类    info = ctx.log.info

    # 打印请求的url    info(request.url)

    # 打印请求方法    info(request.method)

    # 打印host头    info(request.host)

    # 打印请求端口    info(str(request.port))

    # 打印所有请求头部    info(str(request.headers))

    # 打印cookie头    info(str(request.cookies))

      body

      flow.request.urlencoded_form  #获取urlencoded表单类型body

      flow.request.multipart_form #获取复合表单类型body

      flow.request.get_text()  #获取所有类型的body

      # 所有服务器响应的数据包都会被这个方法处理

# 所谓的处理,我们这里只是打印一下一些项def response(flow):

    # 获取响应对象    response = flow.response

    # 实例化输出类    info = ctx.log.info

    # 打印响应码    info(str(response.status_code))

    # 打印所有头部    info(str(response.headers))

    # 打印cookie头部    info(str(response.cookies))

    # 打印响应报文内容    info(str(response.text))