Pip 支持该pyproject.toml文件,但到目前为止,新模式的所有实际使用都需要一个 3rd 方工具来自动生成这些文件(例如,诗歌和 pip)。不像setup.py已经是人类可写的,pyproject.toml不是(还)。
[build-system]
requires = [
"setuptools >= 40.9.0",
"wheel",
]
build-backend = "setuptools.build_meta"
Run Code Online (Sandbox Code Playgroud)
但是,此文件不包含包依赖项(如 PEP 621 中所述)。Pip 确实支持使用安装包,pyproject.toml但 pep 没有指定如何pyproject.toml为官方构建系统编写包依赖项setuptools。
我如何编写包依赖项pyproject.toml?
相关的 StackOverflow 问题:
这个问题要求一种自动生成的方法pyproject.toml,我的问题有所不同,因为我要求使用人工编写的pyproject.toml.
setuptools python-packaging python-poetry pyproject.toml pep517
我最近发现诗歌可以帮助解决我们小组的所有不同依赖问题。在一个项目中,我们也使用PyTorch,我想知道是否有人可以帮助我并指出如何将其添加到诗歌中的方向。我们正在研究无法访问 CUDA GPU(用于简单的道路推理/测试)的机器和我们可以访问 CUDA CPU 的工作站。现在我很想用诗歌来确保每个开发者都在诗歌的帮助下使用相同的版本,但这可能吗?
似乎没有明显的方法来决定安装哪个 PyTorch 版本。我想过将不同的安装说明添加为额外的依赖项,但我找不到获得等效设置的选项,例如:
pip3 install torch==1.3.1+cpu torchvision==0.4.2+cpu -f https://download.pytorch.org/whl/torch_stable.html
我可以设置不同在线轮子的总路径,例如:
https://download.pytorch.org/whl/torch_stable.html/cpu/torch-1.3.1%2Bcpu-cp36-cp36m-win_amd64.whl
但我宁愿不直接在 git 中使用它们......我在诗歌中看到的最接近的选项是手动下载它们然后使用file = X命令。
我将不胜感激任何帮助。:)
我最近安装了 Pyenv 和 Poetry,想创建一个新的 Python 3.8 项目。我已经将python的global和local版本设置为3.8.1使用适当的 Pyenv 命令(pyenv global 3.8.1例如)。当我pyenv version在终端中运行时,输出3.8.1.符合预期。
现在,问题是当我用 Poetry( poetry new my-project)创建一个新的 python 项目时,生成的pyproject.toml文件用 python 2.7 创建了一个项目:
[tool.poetry]
name = "my-project"
version = "0.1.0"
description = ""
authors = ["user <user@email.com>"]
[tool.poetry.dependencies]
python = "^2.7"
[tool.poetry.dev-dependencies]
pytest = "^4.6"
[build-system]
requires = ["poetry>=0.12"]
build-backend = "poetry.masonry.api"
Run Code Online (Sandbox Code Playgroud)
Poetry 似乎默认回 Python 的系统版本。如何更改它以使用与 Pyenv 一起安装的版本?
编辑
我使用的是 MacOS,它与 Python 2.7 捆绑在一起。我认为这可能会导致这里的一些问题。我已经使用 Pyenv 再次重新安装了 …
我发现的有关此主题的任何文档都提到构建 deb 包的“唯一”要求是拥有正确的setup.py(和requirements.txt)。例如,在dh-virtualenv 教程、stdeb 文档和Debian 的 python 库风格指南中。
但现在新的(令人惊奇的)工具,如诗,允许开发(并上传到 PyPI)Python 项目,而无需任何setup.py(此文件和其他几个文件,包括requirements.txt全部被替换pyproject.toml)。我相信flit也允许这样做。
我开发了一个由诗歌管理的 python 项目,并想将其打包到 Ubuntu/Debian 中。我想,作为一种解决方法,我仍然可以编写一个从和 一个文件setup.py中获取其值的文件(使用来自 的值手动编写)。pyproject.tomlrequirements.txtpoetry.lock
但是,有没有办法在没有任何文件的情况下做到这一点setup.py?
我有一个根据基本 Poetry说明创建的 Python 项目。
项目文件夹是这样的:
my-project
+----my_project
| +-- my_project.py
| +-- File1.py
| +-- File2.py
|
+----pyproject.toml
Run Code Online (Sandbox Code Playgroud)
如何将内容从一个文件导入到另一个文件的示例:my_project.py我有代码
from . import File1, File2
Run Code Online (Sandbox Code Playgroud)
如果我想从 VSCode 调试它,如果我尝试F5在 中my_project.py,我会收到错误:
Exception has occurred: ImportError
attempted relative import with no known parent package
Run Code Online (Sandbox Code Playgroud)
但是,如果我不像上面那样表达导入,则无法使用该poetry命令运行它。
在pyproject.toml文件中,我有这个:
[tool.poetry.scripts]
my-project = "my_project.my_project:run"
Run Code Online (Sandbox Code Playgroud)
run是文件中的入口点方法my_project.py。
要从命令提示符运行项目,我转到项目文件夹(包文件夹所在的位置)并输入poetry run my-project
再说一次,到目前为止,一切都根据Poetry 文档。
问题:如何在 VSCode 中调试这个项目?
我知道我需要创建一个launch.json文件,但我不知道配置应该是什么样子...... …
我刚刚使用新install-poetry.py脚本在 Windows 10 计算机上安装了诗歌。我刚刚将我的 python 应用程序依赖管理转换为pyproject.tomlwith poetry. 它适用于我的大多数依赖项,但不适用于genicam包,并显示上述Unable to find installation candidates错误消息。安装该软件包pip确实有效。我该如何调试此类问题?我尝试运行poetry install -vvv,但我得到的只是诗歌内部的详细形式的相同堆栈跟踪,没有任何有用的内容添加到简短形式的输出中(特别是没有尝试但失败的索引或网址):
Package operations: 1 install, 0 updates, 0 removals\n\n \xe2\x80\xa2 Installing genicam (1.1.0)\n\n RuntimeError\n\n Unable to find installation candidates for genicam (1.1.0)\n\n at ~\\AppData\\Roaming\\pypoetry\\venv\\lib\\site-packages\\poetry\\installation\\chooser.py:72 in choose_for\n 68\xe2\x94\x82\n 69\xe2\x94\x82 links.append(link)\n 70\xe2\x94\x82\n 71\xe2\x94\x82 if not links:\n \xe2\x86\x92 72\xe2\x94\x82 raise RuntimeError(\n 73\xe2\x94\x82 "Unable to find installation candidates for {}".format(package)\n 74\xe2\x94\x82 )\n 75\xe2\x94\x82\n 76\xe2\x94\x82 # Get the …Run Code Online (Sandbox Code Playgroud) 你能给我一个Dockerfile的例子,我可以在其中将poetry.lock和pyproject.toml所需的所有软件包安装到Docker的图像/容器中吗?
我有一个包配置为在容器构建期间使用诗歌进行构建/安装。我不明白为什么poetry install说它已经安装了我的软件包,但没有找到它。不过,poetry build后面跟着一个pip install轮子效果很好。如果包名称与根文件夹的文件夹名称相同,是否需要指定子包,或者如何让诗歌使用安装完整的包poetry install?我尝试了对pyproject.toml文件的各种调整,包括设置packages。
文件结构如下所示:
\n.\n\xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 my_pkg\n \xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 Dockerfile\n \xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 pyproject.toml\n \xc2\xa0\xc2\xa0 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 my_pkg\n \xc2\xa0\xc2\xa0 \xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 __init__.py\n \xc2\xa0\xc2\xa0 \xc2\xa0\xc2\xa0 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 app.py\n\nRun Code Online (Sandbox Code Playgroud)\n该pyproject.toml文件如下所示:
[tool.poetry]\nname = "my_pkg"\nversion = "0.1.0"\ndescription = "My Package"\n\n[tool.poetry.dependencies]\npython = ">=3.8,<3.11"\n...\n\n[build-system]\nrequires = ["poetry-core>=1.0.0"]\nbuild-backend = "poetry.core.masonry.api"\nRun Code Online (Sandbox Code Playgroud)\n问题是运行后未安装该软件包poetry install。
% poetry install\nInstalling dependencies from lock file\n\nPackage operations: 70 installs, 4 updates, 0 removals\n\n \xe2\x80\xa2 Installing …Run Code Online (Sandbox Code Playgroud) 我正在尝试将我的 Poetry 版本更新到 1.2.*,但是在运行时poetry self update出现错误Could not find poetry-1.2.2-linux.sha256sum file...我不知道如何尝试将 Poetry 更新到希望存在校验和的早期版本。
我的问题是,当我执行时poetry install,poetry update或者poetry lock进程会无限期地运行。
我尝试使用该-vvv标志来获取正在发生的事情的输出,看起来它在第一次安装中永远卡住了。
我的连接良好,并且我尝试安装的所有软件包都存在。
我使用版本 1.2.1,但无法升级到较新的版本,因为文件的格式.lock不同并且我们的管道失败。
python-poetry ×10
python ×9
deb ×1
docker ×1
dockerfile ×1
genicam ×1
infinite ×1
packaging ×1
pep517 ×1
pyenv ×1
setup.py ×1
setuptools ×1
virtualenv ×1