Dan*_*inn 17 python x86-64 armv7 raspberry-pi python-poetry
我的主要开发机器是(Raspberry Pi) x86_64
,而我的一些部署环境是arm7vl
(Raspberry Pi)。对于大多数 Python 开发来说,这不是问题,但某些 Python 库仅在PyPI forx86_64
或piwheels for aarmv7l
. 这导致使用诗歌遇到一些困难。作为一个简单的示例,这是在计算机pyproject.toml
上创建的文件x86_64
:
[tool.poetry]
name = "poetrytest"
version = "0.1.0"
description = ""
authors = ["Your Name <you@example.com>"]
[tool.poetry.dependencies]
python = "^3.9"
opencv-python = "^4.5.5"
[tool.poetry.dev-dependencies]
[build-system]
requires = ["poetry-core>=1.0.0"]
build-backend = "poetry.core.masonry.api"
Run Code Online (Sandbox Code Playgroud)
相应的poetry.lock
文件包含从 PyPI 中提取的文件的哈希值,当您运行时,poetry install
一切都会按预期工作。 但是,如果将这两个文件复制到 Raspberry Pi,安装将无法找到合适的.whl
文件,因此会退回到尝试从源代码构建,这大约需要 2 小时并且失败:-(
要使其在 Pi 上工作,您需要将此块添加到pyproject.toml
:
[[tool.poetry.source]]
name = "piwheels"
url = "https://www.piwheels.org/simple/"
Run Code Online (Sandbox Code Playgroud)
...然后删除poetry.lock
并运行poetry install
。这将重新生成锁定文件(现在包含来自 piwheels.org 的条目)并按预期安装所有内容。然而这并不是很有用,因为这意味着我无法版本pyproject.toml
或poetry.lock
. 我也无法在原始pyproject.toml
文件中包含上述源代码片段,或者机器上的构建x86_64
会因以下原因而终止Unable to find installation candidates
.
到目前为止,我能找到的唯一跨平台方法是让机器上的所有内容保持版本控制x86_64
,然后当我想安装某些东西时在 Pi 上运行它:
$ poetry export --without-hashes > requirements.txt
$ pip install --requirement requirements.txt
Run Code Online (Sandbox Code Playgroud)
这……很糟糕。当然,一定有更好的方法吗?
解决你的问题的方法可能是使用 conda 而不是诗歌。然后设置环境变量CONDA_SUBDIR=<your_platform> ,该变量强制在构建虚拟环境时使用平台:
conda env create ...
Run Code Online (Sandbox Code Playgroud)
(未经测试)然后您应该能够传输创建的虚拟环境并在部署环境中使用它。
归档时间: |
|
查看次数: |
3126 次 |
最近记录: |