rbh*_*lla 6 python docker visual-studio-code python-poetry
我在 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 中设置解释器的正确方法是什么?
小智 0
这是我能想到的想法:-
假设:
python所有服务的全球版本保持不变make并poetry在全球范围内安装我会利用makefile或bash script
venvs: service1 service2
service1_venv:
poetry install -C service1
service2_venv:
poetry install -C service2
Run Code Online (Sandbox Code Playgroud)
按照文件中的make venvs方式触发以安装所有 venv 服务postCreateCommand.devcontainer/devcontainer.json
我还没有尝试过,理想情况下应该有一些解决方法
| 归档时间: |
|
| 查看次数: |
796 次 |
| 最近记录: |