pyproject.toml 是啥?
pyproject.toml
是一种配置文件,通常用于定义 Python 项目的元数据、依赖项和构建配置。它是 Python PEP 518 的一部分,用于指定构建工具(如 pip
)应该如何构建项目。
一些常见的用途包括:
- 项目元数据: 包括项目名称、版本、作者等信息。
- 构建系统配置: 指定构建工具和插件。
- 依赖项管理: 定义项目的依赖项,包括依赖项的版本。
- 其他配置: 包括其他项目特定的配置选项。
示例 pyproject.toml
文件可能如下所示:
tomlCopy code
[tool.poetry]name = "myproject"version = "0.1.0"description = "My Python project"authors = ["Your Name autolinkyour.email@example.comautolink"]
[build-system]requires = ["poetry-core>=1.0.0"]
build-backend = "poetry.core.masonry.api"[tool.poetry.dependencies]python = "^3.8"requests = "^2.26.0"[tool.poetry.dev-dependencies]pytest = "^7.2.2"
这个文件是由 Poetry 构建工具使用的,但其他一些工具(如 flit
、setuptools
等)也可以使用类似的文件进行配置。
使用这个相较于传统的 pip 有啥优点呢?
使用 Poetry 相对于传统的 pip
和 requirements.txt
有一些优点:
- 统一管理依赖关系: Poetry 通过
pyproject.toml
文件统一管理项目的依赖关系,包括开发依赖和运行时依赖。这简化了依赖管理,减少了手动编辑requirements.txt
的需要。 - 锁定依赖版本: Poetry 生成一个
poetry.lock
文件,用于锁定项目中所有依赖项的版本。这确保了在不同环境中安装相同的软件包版本,从而减少了由于依赖项不一致而导致的问题。 - 语义版本控制: Poetry 支持语义版本控制,允许您在项目中使用
^
、~
等符号,从而更容易指定依赖项的最低版本。 - 自动化构建: Poetry 提供了一个简化的构建工具,可以方便地构建和发布 Python 项目。它也与一些 CI/CD 工具集成得很好。
- 用户友好的 CLI: Poetry 的命令行界面(CLI)是用户友好的,提供了一组简单而强大的命令,使得创建、构建、测试和发布项目变得容易。
- 文档和社区支持: Poetry 有详细的文档,社区支持也较为活跃,可以在 GitHub 上找到有关 Poetry 的详细信息和问题解答。
总的来说,Poetry 提供了更现代、更一致的方式来管理 Python 项目的依赖关系和构建过程。
示例
[tool.poetry]
name = "python-template"
version = "0.1.0"
description = ""
authors = ["Your Name <you@example.com>"]
[tool.poetry.dependencies]
python = ">=3.10.0,<3.11"
replit = "^3.2.4"
Flask = "^2.1.3"
baseopensdk = {url = "https://lf3-static.bytednsdoc.com/obj/eden-cn/lmeh7phbozvhoz/base-open-sdk/baseopensdk-0.0.12-py3-none-any.whl"}
[tool.poetry.dev-dependencies]
debugpy = "^1.6.2"
replit-python-lsp-server = {extras = ["yapf", "rope", "pyflakes"], version = "^1.5.9"}
toml = "^0.10.2"
[build-system]
requires = ["poetry-core>=1.0.0"]
build-backend = "poetry.core.masonry.api"
配置
poetry config
poetry config –list
(backend-py3.12) PS D:\Desktop\frontend\screenshot-to-code\backend> poetry config --list
cache-dir = "C:\\Users\\zz\\AppData\\Local\\pypoetry\\Cache"
experimental.system-git-client = false
installer.max-workers = null
installer.modern-installation = true
installer.no-binary = null
installer.parallel = true
plugins.pypi_mirror.url = "https://mirrors.cloud.tencent.com/pypi/simple/"
repositories.PyPI.url = "https://mirrors.cloud.tencent.com/pypi/simple/"
virtualenvs.create = true
virtualenvs.in-project = null
virtualenvs.options.always-copy = false
virtualenvs.options.no-pip = false
virtualenvs.options.no-setuptools = false
virtualenvs.options.system-site-packages = false
virtualenvs.path = "{cache-dir}\\virtualenvs" # C:\Users\zz\AppData\Local\pypoetry\Cache\virtualenvs
virtualenvs.prefer-active-python = false
virtualenvs.prompt = "{project_name}-py{python_version}"
warnings.export = true
poetry config virtualenvs.in-project true
在当前项目下创建虚拟环境
经过设置之后,确实在当前项目下生成 venv 文件了,牛逼。
我们可以使用 poetry config --list
指令来查看 poetry 的几个主要设定,
X:\poetry-demo>poetry config --list
cache-dir = "C:\\Users\\xxp\\AppData\\Local\\pypoetry\\Cache"
experimental.new-installer = true
experimental.system-git-client = false
installer.max-workers = null
installer.modern-installation = true
installer.no-binary = null
installer.parallel = true
virtualenvs.create = true
virtualenvs.in-project = null
virtualenvs.options.always-copy = false
virtualenvs.options.no-pip = false
virtualenvs.options.no-setuptools = false
virtualenvs.options.system-site-packages = false
virtualenvs.path = "C:\\Users\\xxp\\AppData\\Local\\pypoetry\\Cache\\virtualenvs"
virtualenvs.prefer-active-python = false
virtualenvs.prompt = "{project_name}-py{python_version}"
X:\poetry-demo>poetry config --list
cache-dir = "C:\\Users\\xxp\\AppData\\Local\\pypoetry\\Cache"
experimental.new-installer = true
experimental.system-git-client = false
installer.max-workers = null
installer.modern-installation = true
installer.no-binary = null
installer.parallel = true
virtualenvs.create = true
virtualenvs.in-project = null
virtualenvs.options.always-copy = false
virtualenvs.options.no-pip = false
virtualenvs.options.no-setuptools = false
virtualenvs.options.system-site-packages = false
virtualenvs.path = "C:\\Users\\xxp\\AppData\\Local\\pypoetry\\Cache\\virtualenvs"
virtualenvs.prefer-active-python = false
virtualenvs.prompt = "{project_name}-py{python_version}"
其中 virtualenvs.create = true
若改为 false
,则可以停止 poetry 在检查不到虚拟环境是自动创建的行为模式,但是建议不要改动。
而 virtualenvs.in-project = false
就是我们要修改的目标,使用指令:
poetry config virtualenvs.in-project true
poetry config virtualenvs.in-project true
先把之前创建的虚拟环境删除
X:\poetry-demo>poetry env remove python
Deleted virtualenv: C:\Users\xxp\AppData\Local\pypoetry\Cache\virtualenvs\poetry-demo-Ut74gzEx-py3.10
X:\poetry-demo>poetry env remove python
Deleted virtualenv: C:\Users\xxp\AppData\Local\pypoetry\Cache\virtualenvs\poetry-demo-Ut74gzEx-py3.10
重新创建虚拟环境,看一下差异:
X:\poetry-demo>poetry env use python
Creating virtualenv poetry-demo in X:\poetry-demo\.venv
Using virtualenv: X:\poetry-demo\.venv
X:\poetry-demo>poetry env use python
Creating virtualenv poetry-demo in X:\poetry-demo\.venv
Using virtualenv: X:\poetry-demo\.venv
可以看出:
- 虚拟环境的路径改为项目的根目录下了
- 名称固定位
.venv
个人觉得这样的设定更加简洁。
现在可以了。
使用
poetry show
很优美!!
poetry show –tree
poetry env
poetry env use
Creating virtualenv backend-2aBuY-DE-py3.12 in C:\Users\zz\AppData\Local\pypoetry\Cache\virtualenvs
Using virtualenv: C:\Users\zz\AppData\Local\pypoetry\Cache\virtualenvs\backend-2aBuY-DE-py3.12
然后呢?
一旦你使用 poetry env use
命令指定了 Python 解释器,Poetry 会为你的项目创建一个虚拟环境,并使用指定的 Python 版本。接下来,你可以在该虚拟环境中执行其他的 Poetry 命令,比如安装项目的依赖项。
在你的例子中,你已经指定了 Python 3.12,并且虚拟环境已经被创建。接下来,你可以运行以下命令安装项目的依赖项:
poetry install
这将使用指定的 Python 版本创建虚拟环境,并安装项目中指定的依赖项。如果这是一个新的 Poetry 项目,它会读取 pyproject.toml
文件中的依赖项信息,并为项目安装这些依赖项。
完成后,你的项目应该准备好运行了。你可以使用 Poetry 提供的其他命令来运行、测试和构建你的项目。例如:
bashCopy code
poetry run <your-command>
其中 <your-command>
是你希望在虚拟环境中执行的命令。
希望这对你有帮助!如果有其他问题,请随时问。
poetry env list
查看都有哪些虚拟环境
poetry env remove
poetry install
poetry shell 什么意思?
poetry shell
是 Poetry 提供的一个命令,用于激活当前项目的虚拟环境。在 Python 开发中,虚拟环境是一种隔离项目依赖的方式,以确保每个项目都有其独立的 Python 环境。
使用 poetry shell
命令,Poetry 会自动激活当前项目的虚拟环境,这样你可以在项目中执行命令,而这些命令将在虚拟环境中运行。这有助于隔离项目的依赖,防止与其他项目或系统的依赖发生冲突。
具体来说,执行以下命令:
bashCopy code
poetry shell
这将:
- 检查项目中是否存在虚拟环境。如果不存在,Poetry 将创建一个虚拟环境。
- 激活虚拟环境,将命令行提示符更改为虚拟环境中的提示符。
- 你可以在这个虚拟环境中运行 Python 解释器、安装依赖、执行脚本等。
在虚拟环境中,你可以执行项目中的命令而无需在每个命令前面添加 poetry run
。当你退出虚拟环境(通过 exit
或关闭终端窗口)时,你将返回到原来的环境。
这有助于确保你在开发和运行项目时使用了正确的依赖项,而不会受到其他项目或全局 Python 环境的影响。
下载
在安装了 pipx 的基础上,沃安装了 poetry
最新的安装方式
https://blog.csdn.net/weixin_43422210/article/details/129149703
换源
下面的我还没试哈,反正记得把代理关了
哥们试玩了,成功了:
(注)如果有 git,直接执行这个命令就会自动完成安装插件和换源:git clone **https://github.com/waketzheng/carstino** && python carstino/pip_conf.py –poetry
- 方法一:使用 pipx
pipx inject poetry poetry-plugin-pypi-mirror
- 方法二:使用 poetry self
poetry self add poetry-plugin-pypi-mirror
- 注:这两个方法的卸载命令分别是
pipx runpip poetry uninstall xxx
和poetry self remove xxx
- 按照插件文档修改默认源
- 方法一:改配置文件 新建或修改配置文件 config.toml,增加如下内容 (该 toml 文件路径是:Linux 系统在
~/.config/pypoetry/
,Windows 在%APPDATA%\pypoetry\
,Mac 在~/Library/Preferences/pypoetry/
)- 注:更改 url 的值即可换用其他镜像源
方法二:环境变量
export POETRY_PYPI_MIRROR_URL=https://mirrors.cloud.tencent.com/pypi/simple/
修改为清华镜像源
```
poetry source add tsinghua https://pypi.tuna.tsinghua.edu.cn/simple
poetry source add tsinghua [https://pypi.tuna.tsinghua.edu.cn/simple](https://pypi.tuna.tsinghua.edu.cn/simple)
![](/images/GgQhbdtemoYuiBxtoz8cfdLhnvd.png)
会在这里加
```
文档信息
- 本文作者:Zzhiter
- 本文链接:http://zzhiter.top/2023/11/02/poetry%E5%AE%89%E8%A3%85%E5%92%8C%E4%BD%BF%E7%94%A8/
- 版权声明:自由转载-非商用-非衍生-保持署名(创意共享3.0许可证)