标签: python-poetry

我可以手动解决诗歌中的依赖冲突(SolverProblemError)吗?

我决定使用poetry,一切都很顺利,根据需要添加了现有项目模块的依赖项。\n当我尝试添加 googlesearch-python 包时,我收到了以下 SolverProblemError:

\n
\n
(.env) C:\\Users\\marti\\OneDrive\\Documents\\Master_s_thesis\\Code\\Mastersthesis>poetry add googlesearch-python\nUsing version ^2020.0.2 for googlesearch-python\n\nUpdating dependencies\nResolving dependencies...\n\n  SolverProblemError\n\n  Because googlesearch-python (2020.0.2) depends on beautifulsoup4 (4.9.1) which depends on soupsieve (<2.0), googlesearch-python (2020.0.2) requires soupsieve (<2.0).\n  And because googlesearch-python (2020.0.2) depends on soupsieve (2.0.1), googlesearch-python is forbidden.\n  So, because no versions of googlesearch-python match >2020.0.2,<2021.0.0\n   and mastersthesis depends on googlesearch-python (^2020.0.2), version solving failed.\n\n  at ~\\.poetry\\lib\\poetry\\puzzle\\solver.py:241 in _solve\n      237\xe2\x94\x82             packages = result.packages\n      238\xe2\x94\x82         except OverrideNeeded as e:\n      239\xe2\x94\x82             return self.solve_in_compatibility_mode(e.overrides, …
Run Code Online (Sandbox Code Playgroud)

python dependencies python-poetry

6
推荐指数
0
解决办法
1863
查看次数

无法将诗歌包上传到本地dockerized pypiserver

我使用以下命令创建了本地 pypi 服务器

\n
docker run -p 5151:8080 -v ~/.htpasswd:/data/.htpasswd pypiserver/pypiserver:latest -P .htpasswd packages\n
Run Code Online (Sandbox Code Playgroud)\n

然而,当我尝试使用诗歌上传我的包时,我得到:

\n
poetry publish -r myrepo\n\n\nPublishing mypack (0.1.0) to myrepo\n - Uploading mypack-0.1.0-py3-none-any.whl 100%\n\n UploadError\n\n HTTP Error 405: Method Not Allowed\n\n at ~/.poetry/lib/poetry/publishing/uploader.py:216 in _upload\n     212\xe2\x94\x82                     self._register(session, url)\n     213\xe2\x94\x82                 except HTTPError as e:\n     214\xe2\x94\x82                     raise UploadError(e)\n     215\xe2\x94\x82 \n   \xe2\x86\x92 216\xe2\x94\x82             raise UploadError(e)\n     217\xe2\x94\x82 \n     218\xe2\x94\x82     def _do_upload(\n
Run Code Online (Sandbox Code Playgroud)\n

我将本地存储库定义如下:

\n

诗歌配置 repositories.myrepo http://localhost:5151/simple

\n

\n

诗歌配置 http-basic.myrepo 用户密码

\n

我错过了什么?

\n

docker pypiserver python-poetry

6
推荐指数
1
解决办法
2131
查看次数

如何在同一个项目中使用多个诗歌环境?

对于我的项目,我有时喜欢创建不同的 git 分支,这些分支使用不同的 python 包来尝试完成相同的任务,这样我就可以看到我最喜欢使用哪个分支(即哪一组包)。相应地,我为每个分支创建单独的环境。

我更熟悉 Anaconda 和 conda 包管理器工具,它允许为单个项目轻松创建多个环境,只需为每个环境提供单独的 .yml 文件,并激活/停用与每个 .yml 文件关联的环境名称。

有没有办法用诗歌来做类似的事情?通过玩弄诗歌和我读过的文档,当您位于用诗歌初始化的目录中时,诗歌会自动识别虚拟环境,并且poetry.lock该环境有一个文件。poetry.lock有没有一种方法可以为单个项目设置多个文件以拥有多个诗歌环境,并在它们之间进行切换?或者如果没有,诗歌中是否有其他方式来模拟我使用 conda 描述的体验?

python anaconda python-poetry

6
推荐指数
0
解决办法
1583
查看次数

是否可以从 python 中的 black 命令运行 isort formatter

我喜欢从精心设计的 Python 项目中获取灵感。

最后一个给我启发的是诗歌库

我从中复制了很多,但这篇文章的主题是blackisort

两者都配置良好pyproject.toml

[tool.isort]
profile = "black"
...
known_first_party = "poetry"


[tool.black]
line-length = 88
include = '\.pyi?$'
exclude = '''
/(
...
)/
'''
Run Code Online (Sandbox Code Playgroud)

格式设置如下Makefile

format: clean
    @poetry run black poetry/ tests/
Run Code Online (Sandbox Code Playgroud)

我认为运行make format会运行black,它将在内部运行isort,但是当我运行时isort .,它随后正确地格式化了导入语句。然后好像black没跑isort

问:内部运行吗?blackisort

python isort python-black python-poetry

6
推荐指数
1
解决办法
8307
查看次数

如何使用诗歌安装子模块的依赖项?

我有一个my-project使用子模块的项目my-submodule。子模块具有与my-project&poetry.lock文件不同的依赖关系pyproject.toml

my-project我已经安装了使用所需的依赖项poetry add。这些 deps 已安装,并在 的根文件夹中创建poetry.lock&文件。pyproject.tomlmy-project

现在,我还想安装子模块的依赖项。假设子模块的路径是path/to/submodule/from/root,如何安装子模块的依赖项并使这些依赖项反映在poetry.lock&中pyproject.toml文件中?

这里已经提出了类似的问题:Managing dependency of git submodules with Poetry,但那里没有提供解决方案。

python python-3.x python-poetry

6
推荐指数
1
解决办法
8909
查看次数

Poetry - 找出与其他依赖项兼容的最新版本

使用诗歌,有时在检查依赖关系时诗歌会指示由于兼容性问题而无法安装某些东西。

例如,我的项目中有numpy==1.19.2. 现在,当我尝试安装时,pandas我得到以下信息

$: poetry add pandas

The currently activated Python version 3.6.9 is not supported by the project (>=3.8,<3.11).
Trying to find and use a compatible version. 
Using python3.9 (3.9.7)
Using version ^1.3.4 for pandas

Updating dependencies
Resolving dependencies... (0.6s)

  SolverProblemError

  Because no versions of pandas match >1.3.4,<2.0.0
   and pandas (1.3.4) depends on numpy (>=1.20.0), pandas (>=1.3.4,<2.0.0) requires numpy (>=1.20.0).
  So, because my_project depends on both numpy (1.19.2) and pandas (^1.3.4), version solving failed.
Run Code Online (Sandbox Code Playgroud)

如何确定 …

python-poetry

6
推荐指数
1
解决办法
4497
查看次数

如何使用诗歌将 Python 轮子打包为 cli 可执行文件?

问题

\n

我想使用诗歌分发一个 python 包并使其作为 cli 可执行,就像black, pipenv, poetry,flake8朋友一样。

\n

示例用法如下:

\n
python -m my-package [args]\n
Run Code Online (Sandbox Code Playgroud)\n

配置

\n

到目前为止,我已经成功构建了一个轮子并使用以下配置将其安装在 docker 映像上:

\n

pyproject.toml

\n
[tool.poetry]\nname = "my-package\nversion = "0.1.0"\ndescription = "A cli tool"\nauthors = []\npackages = [\n    { include = "src/main.py" },\n]\n\n[build-system]\nrequires = ["poetry-core>=1.0.0"]\nbuild-backend = "poetry.core.masonry.api"\n
Run Code Online (Sandbox Code Playgroud)\n

构建命令:

\n
poetry build -f wheel\npoetry export -o dist/requirements.txt\n
Run Code Online (Sandbox Code Playgroud)\n

Docker 镜像:

\n
FROM python:3.8-slim as base\n\nCOPY dist/requirements.txt /requirements.txt\nRUN pip install --no-cache-dir --upgrade -r /requirements.txt\nARG APP_VERSION\nCOPY …
Run Code Online (Sandbox Code Playgroud)

python command-line-interface python-wheel python-poetry

6
推荐指数
1
解决办法
6996
查看次数

添加带有 Poetry 的任何新包时出现连接错误

每当我尝试添加带有诗歌的新包(使用poetry add <package_name>)时,我都会收到以下连接错误:

\n
 ConnectionError\n\n  ('Connection aborted.', ConnectionResetError(104, 'Connection reset by peer'))\n\n  at ~/.poetry/lib/poetry/_vendor/py3.8/requests/adapters.py:498 in send\n      494\xe2\x94\x82                     low_conn.close()\n      495\xe2\x94\x82                     raise\n      496\xe2\x94\x82 \n      497\xe2\x94\x82         except (ProtocolError, socket.error) as err:\n    \xe2\x86\x92 498\xe2\x94\x82             raise ConnectionError(err, request=request)\n      499\xe2\x94\x82 \n      500\xe2\x94\x82         except MaxRetryError as e:\n      501\xe2\x94\x82             if isinstance(e.reason, ConnectTimeoutError):\n      502\xe2\x94\x82                 # TODO: Remove this in 3.0.0: see #2811\n
Run Code Online (Sandbox Code Playgroud)\n

我已经尝试过的事情:

\n
    \n
  • 不同的软件包(例如:rsa、jupyter)。PyPi 的一些最受欢迎的项目也会发生这种情况。
  • \n
  • 在调试模式下运行该命令,除了此错误之外没有产生任何有用的信息。
  • \n
  • 通过 pip 安装,无需诗歌(有效)。
  • \n
  • 尝试不同的 IDE(Pycharm 的终端和 Jupyter)。两者都发生了这种情况。
  • \n
\n

环境:我使用的是诗歌版本 1.1.12,带有 WSL-2。

\n

python connection python-poetry wsl-2

6
推荐指数
0
解决办法
1318
查看次数

如何将 tkinter 添加到诗歌中的 pyproject.toml 中?

  File "project.py", line 5, in <module>
    from tkinter.filedialog import askopenfilenames
ModuleNotFoundError: No module named 'tkinter'
Run Code Online (Sandbox Code Playgroud)

当我想用诗歌运行 python project.py 运行我的项目时,这种情况总是会发生,但如果我本机运行它就可以完美地工作。所以我猜问题是将 Tkinter 添加到 .toml 文件中,但是当我将 tk 添加到依赖项时,它无法正常工作。我应该怎么办?

python tkinter python-poetry

6
推荐指数
1
解决办法
2019
查看次数

将 PyPy 与诗歌结合使用

如何使用 PyPy (最好pypy3)而不是标准 python poetry

也就是说,应该存储什么pyproject.toml?还需要其他改变吗?

pypy python-poetry

6
推荐指数
1
解决办法
2538
查看次数