强制 venv 将 python 的符号链接放在 macOS 和 Windows 上的相同位置
Posted
技术标签:
【中文标题】强制 venv 将 python 的符号链接放在 macOS 和 Windows 上的相同位置【英文标题】:Force venv to put python's symlink in identical locations on macOS and Windows 【发布时间】:2020-09-10 05:19:42 【问题描述】:我正在 Python 虚拟环境中开发一个程序。运行命令
python -m venv .venv
在 Windows 上,将 python
符号链接放入 .venv\Scripts\
而
python3 -m venv .venv
在 macOS 上将符号链接放在 .venv/bin/
上。我正在使用 Visual Studio Code 进行开发,并且有一个 .vscode\\settings.json
需要指向可执行文件的符号链接。例如
"python.pythonPath": ".venv\\path\\to\\python",
如何强制venv
将符号链接放在相同的位置,而不管平台如何?
PS1..venv
文件夹被 git 忽略并包含在 .gitignore
文件中,因为 AFIK 将其与代码库一起发布并不是一个好习惯。
P.S.2. 为避免 XY 问题,最终目标是在不同平台上拥有相同的开发环境。无论解决方案如何,无论包管理器如何,Visual Studio Code 都应该能够在不同平台上找到可执行文件的符号链接。
P.S.3.我需要想办法改变__VENV_BIN_NAME__
参数。
P.S.4.来自here,一种可能的解决方案可能是改用"python.pythonPath": "$env:PYTHON_INSTALL_LOC",
。
P.S.5.我问了另一个问题here。
【问题讨论】:
我建议您在将.vscode/settings.json
添加到源代码管理之前阅读此问题的所有答案和 cmets - ***.com/questions/32964920/…
【参考方案1】:
两件事。一、你不能让虚拟环境在 Windows 上使用bin/
(参见rejected idea)。
第二,Python 扩展正在运行一个实验来摆脱python.pythonPath
,这将解决您的冲突。有关详细信息以及如何选择加入,请参阅May release blog post。
【讨论】:
在 Windows 上,vscode 自动检测 python 可执行文件,但不检测 pylint 等其他可执行文件...在 macOS 上,我必须在 'settings.json' 中明确指定位置。【参考方案2】:为什么每个操作系统将 venv python 放在哪里很重要?如果您正确地确保 .venv 不在代码库中,但确保它在 .gitignore 中,那么加载您的代码的人是否甚至需要 venv 都没关系。这是一种很好的做法,可以保证无论谁在他们的 python 的任何操作系统上拥有你的代码,以及你的程序需要的任何依赖项,都会被使用。
如果您使用多个操作系统进行开发,请创建一个工作区或项目 .vscode 设置文件,其中包含您要使用的 python 的特定设置,但还要确保项目中的 .vscode 目录位于您的 .gitignore 中。然后在不同的机器上为这些特定于操作系统的设置设置单独的 .vscode 设置。
【讨论】:
以上是关于强制 venv 将 python 的符号链接放在 macOS 和 Windows 上的相同位置的主要内容,如果未能解决你的问题,请参考以下文章