我正在尝试构建一个在 HPC 环境上运行的奇点容器。我正在使用
poetry
来管理python包。
我的
pyproject.toml
文件的内容如下:
[tool.poetry]
name = "haqc"
version = "0.1.0"
description = ""
authors = ["Vivek Katial <[email protected]>"]
[tool.poetry.dependencies]
python = "^3.8"
...
haqc = {path = ".", develop = true}
[tool.poetry.dev-dependencies]
[build-system]
requires = ["poetry-core>=1.0.0"]
build-backend = "poetry.core.masonry.api"
然后在我的
Singularity
定义文件中,我有以下内容可以使用
poetry
进行设置:| ||每次我尝试构建容器时,我都会收到以下错误,尽管
%post
pip install --upgrade pip
git clone https://<REPO>.git
cd HAQC
pip install "poetry==$POETRY_VERSION"
poetry config virtualenvs.create false \
&& poetry install --no-interaction --no-ansi
文件存在于构建时的目录中(我
pyproject.toml
需要检查):
echo
'd an
ls -lhar
to check):
PyProjectException
[tool.poetry] section not found in /HAQC/pyproject.toml
at /usr/local/lib/python3.9/site-packages/poetry/core/pyproject/toml.py:56 in poetry_config
52│ def poetry_config(self): # type: () -> Optional[TOMLDocument]
53│ if self._poetry_config is None:
54│ self._poetry_config = self.data.get("tool", {}).get("poetry")
55│ if self._poetry_config is None:
→ 56│ raise PyProjectException(
57│ "[tool.poetry] section not found in {}".format(self._file)
58│ )
59│ return self._poetry_config
60│
该错误信息表明 Poetry 无法在
pyproject.toml
文件中找到
[tool.poetry]
部分。虽然你说该文件存在,但仍有一些可能的原因导致这个问题:
1. 文件路径错误:
-
Poetry 在运行时可能没有读取正确的
pyproject.toml
文件路径。确保cd HAQC
命令确实切换到了包含pyproject.toml
文件的目录。 -
你可以在
%post
部分添加pwd
命令查看当前工作目录是否正确:
%post
...
pwd
pip install "poetry==$POETRY_VERSION"
...
2. 文件编码问题:
-
确保
pyproject.toml
文件使用 UTF-8 编码保存。其他编码格式可能会导致解析错误。
3. 文件权限问题:
-
确保 Poetry 对
pyproject.toml
文件具有读取权限。你可以尝试在%post
部分添加chmod +r pyproject.toml
命令来更改文件权限。
4. Poetry 版本问题:
-
尝试使用最新版本的 Poetry,旧版本可能存在 bug。你可以尝试在
%post
部分使用pip install --upgrade poetry
更新 Poetry。
5. 文件内容被修改:
-
确保在执行
git clone
和poetry install
命令之间,没有任何其他命令修改了pyproject.toml
文件内容。
调试建议:
-
在
poetry config virtualenvs.create false
命令前后添加echo "----- Before poetry config -----"
和echo "----- After poetry config -----"
,以便查看该命令是否成功执行。 -
尝试在本地环境中使用相同的
Singularity
定义文件和pyproject.toml
文件构建容器,看是否能够复现该问题。
如果以上方法都无法解决问题,请提供以下信息以便进一步分析:
-
完整的
Singularity
定义文件内容。 -
%post
部分的完整日志输出。 - 你使用的 Poetry 版本。
希望以上信息能帮助你解决问题。
标签:python,python-poetry,singularity-container From: 74513062