在 mac m1 蒙特利上运行
\n在干净的环境中安装带有诗歌的火炬会给我带来以下运行时错误:
\n\xe2\x9c\x97 python --version \nPython 3.8.13\n\n\xe2\x9c\x97 poetry --version\nPoetry (version 1.2.2)\n\n\xe2\x9c\x97 poetry add torch\nUsing version ^1.13.0 for torch\n\nUpdating dependencies\nResolving dependencies... (0.1s)\n\nPackage operations: 5 installs, 0 updates, 0 removals\n\n \xe2\x80\xa2 Installing nvidia-cublas-cu11 (11.10.3.66): Pending...\n \xe2\x80\xa2 Installing nvidia-cuda-nvrtc-cu11 (11.7.99): Failed\n\n RuntimeError\n\n \xe2\x80\xa2 Installing nvidia-cuda-nvrtc-cu11 (11.7.99): Failed\n\n RuntimeError\n\n \xe2\x80\xa2 Installing nvidia-cublas-cu11 (11.10.3.66): Failed\n \xe2\x80\xa2 Installing nvidia-cuda-nvrtc-cu11 (11.7.99): Failed\n\n\n \xe2\x80\xa2 Installing nvidia-cudnn-cu11 (8.5.0.96): Failed\n\n RuntimeError\n\n Unable to find installation candidates for nvidia-cudnn-cu11 (8.5.0.96)\n\n at ~/Library/Application Support/pypoetry/venv/lib/python3.8/site-packages/poetry/installation/chooser.py:103 in choose_for\n 99\xe2\x94\x82 …Run Code Online (Sandbox Code Playgroud) 我在 VS Code 中打开一个 monorepo 文件夹,其中顶部文件夹是不同的服务。其中一项服务是使用诗歌来安装依赖项的 python 服务。
我正在使用诗歌的in-project=true virtualenv设置,以便所有依赖项实际上都存储在./python-service/.venv.
monorepo 可以使用 docker-compose 文件在本地运行。因此,任何依赖项安装都是在容器上完成的。
VS Code 不会自动检测这个虚拟环境,但是手动设置时,会立即出错:
Linter 'flake8' is not installed. Please install it or select another linter".
Error: spawn /Users/me/dev/project/python-service/.venv/bin/python EACCES
Run Code Online (Sandbox Code Playgroud)
如果我查看该./python-service/.venv/bin/python文件,我可以看到它实际上是一个符号链接,指向的符号链接/usr/local/bin/python在我的计算机上不存在,仅在容器上存在。
由于 VS Code 在我的计算机上运行,而不是在容器上运行,因此它无法遵循此符号链接是有道理的。
我考虑过两种选择:
always-copy virtualenv选项。由于某种原因,这实际上并没有复制python二进制文件(由其他人复制)。所以这实际上并不能解决这个问题。配置诗歌/vscode/docker 以确保可以在 VS Code 中设置解释器的正确方法是什么?
Poetry 安装失败,并显示 ChefBuildError:后端操作失败:HookMissing('build_editable')
我的诗歌版本是1.4.2
我使用 conda 使用 python 3.10.9 创建一个新环境。我使用 pip 安装了诗歌,在添加几个包后,该poetry add pkg命令不起作用并出现错误消息:
HTTPResponse.__init__() got an unexpected keyword argument 'strict'
Run Code Online (Sandbox Code Playgroud)
我用谷歌搜索了这个问题,但没有答案,如何解决?
让诗歌添加命令正常工作
所以我尝试使用 openai-whisper。我正在使用诗歌作为我的环境和依赖管理器。但尝试下载时不断出现错误。我得到的错误是,安装 triton (2.0.0): 失败
\n我尝试了典型的诗歌添加,这是错误
\npoetry add openai-whisper \nUsing version ^20230314 for openai-whisper\n\n \xe2\x80\xa2 Installing triton (2.0.0): Failed\n\n RuntimeError\n\n Unable to find installation candidates for triton (2.0.0)\n\n at /usr/local/Cellar/poetry/1.4.2/libexec/lib/python3.11/site-packages/poetry/installation/chooser.py:109 in choose_for\n 105\xe2\x94\x82 \n 106\xe2\x94\x82 links.append(link)\n 107\xe2\x94\x82 \n 108\xe2\x94\x82 if not links:\n \xe2\x86\x92 109\xe2\x94\x82 raise RuntimeError(f"Unable to find installation candidates for {package}")\n 110\xe2\x94\x82 \n 111\xe2\x94\x82 # Get the best link\n 112\xe2\x94\x82 chosen = max(links, key=lambda link: self._sort_key(package, link))\nRun Code Online (Sandbox Code Playgroud)\n 我已使用 手动添加了诗歌插件poetry self add xxx,但我没有看到 pyproject.toml 或诗歌.lock 中的任何行发生更改。我希望这个插件包含在开发环境中,因此需要在其他人设置环境时安装它。您可以将插件添加到--dev依赖项中吗?
正是这个问题,但是使用 Poetry 而没有 Setuptools。
我想跑
print('Installation finished, doing other things...')
Run Code Online (Sandbox Code Playgroud)
当我的包安装时。使用 Setuptools,您可以只进行修改setup.py,但在 Poetry 中特别没有setup.py。
我真正想做的是生成一个默认.mypackage_config文件并将其放在有用的地方。我不知道如何在没有任意代码的情况下执行此操作,但是 Poetry不允许安装任意代码。有没有办法做到这一点?
要构建一个由poetry我管理的 python 项目,我需要先构建 C 扩展(相当于python setup.py build)。poetry能够根据这个github 问题来做到这一点。但是对我来说pyproject.toml,在使用poetry build?
有没有办法如何使用 Poetry 为不同的硬件配置指定不同的 python 包版本?
例如,我有几种硬件配置(支持 cuda 10.1 和 cuda 10.0 的机器)。我应该如何根据这些(以及基于配置的不同包名)指定对版本不同的包的依赖。
不同情况需要配置的示例:
我有一个由诗歌构建的 fastapi 项目。我想在 pyproject.tom 中使用脚本部分运行应用程序,如下所示:
poetry run start
Run Code Online (Sandbox Code Playgroud)
该部分中的双引号内是什么?
[tool.poetry.scripts]
start = ""
Run Code Online (Sandbox Code Playgroud)
我尝试运行以下脚本。
import uvicorn
from fastapi import FastAPI
app = FastAPI()
@app.get("/")
async def root():
return {"message": "Hello World"}
def main():
print("Hello World")
uvicorn.run(app, host="0.0.0.0", port=8000, reload=True, workers=2)
if __name__ == "__main__":
main()
Run Code Online (Sandbox Code Playgroud)
它停止应用程序并只显示这样的警告。
警告:您必须将应用程序作为导入字符串传递以启用“重新加载”或“工人”。
python-poetry ×10
python ×6
python-3.x ×3
docker ×1
fastapi ×1
python-c-api ×1
torch ×1
uvicorn ×1