当前位置: 首页 > 知识库问答 >
问题:

强制venv将python的符号链接放在macOS和Windows上的相同位置

庄智
2023-03-14

我正在Python虚拟环境中开发一个程序

python -m venv .venv

在Windows上,将python符号链接放入。venv\Scripts\while

python3 -m venv .venv

在macOS上,将符号链接设置为。venv/bin/。我使用Visual Studio代码进行开发,有一个。vscode\\settings。json需要指向可执行文件的符号链接。例如

{
    "python.pythonPath": ".venv\\path\\to\\python",
}

我如何强制venv将符号链接放置在相同的位置,而不考虑平台?

P. S.1.. venv文件夹被git忽略,并包含在. gitignore文件中,作为AFIK,将其与代码库一起发布不是一个好的做法。

第2页。为了避免XY问题,最终目标是在不同平台上拥有相同的开发环境。不管是什么解决方案,不管是什么包管理器,VisualStudio代码都应该能够在不同的平台上找到可执行文件的符号链接。

第3页。我需要找到一种方法来更改参数。

第4页。从这里开始,一个可能的解决方案可能是使用“python.pythonPath”:“${env:python_INSTALL_LOC}”,而不是使用

第5页。我问了另一个问题。


共有2个答案

终安和
2023-03-14

为什么每个操作系统把venv python放在哪里很重要?如果你已经正确地确保. venv不在代码库中,但确保它在. gitignore中,那么加载你代码的人甚至需要venv也没关系。这是一个很好的实践,可以保证无论谁在他们的python上拥有你的代码,以及你的程序需要的任何依赖项,都会被使用。

如果您使用多个操作系统进行开发,请创建一个工作区或项目。vscode设置文件,其中包含您要使用的python的特定设置,但也要确保项目中的. vscode目录位于您的. gitignore中。然后在不同的机器上为这些操作系统特定的设置设置单独的. vscode设置。

阴鸿才
2023-03-14

两件事。首先,你不能让虚拟环境在Windows上使用bin/(参见被拒绝的想法)。

第二,Python扩展正在运行一个实验来摆脱解决冲突的python.pythonPath。有关详细信息以及如何选择加入,请参阅5月发布的博客文章。

 类似资料:
  • 问题内容: 我最近开始在同一台PC上使用Windows和Linux- 它们安装在两个不同的分区中,第三个分区包含公用数据和存档。从Windows创建的virtualenvs使用文件夹“ Scripts”创建,而Linux中的对应文件是文件夹“ bin”。 这里的问题是这些文件夹中的文件不适用于两个操作系统。例如,bin(在Linux中创建)中包含的“激活”不在Windows中运行,另一方面,在Wi

  • 问题内容: 假设我的主文件夹中有文件夹〜/ a / b,并且文件夹b包含指向“ ..”的符号链接,名为“ symlink”。然后,我在bash中执行以下操作: pwd -P打印当前工作目录,并取消引用所有符号链接。为什么工作目录位于/ home / hm / a / b的末尾,而不是/ home / hm? 问题答案: 根据, 换句话说,是指使用 逻辑 结构,而实际上使用 物理 目录结构。 逻辑结

  • 问题内容: 我对Cygwin很陌生。我创建了一个符号链接,如下所示 当我通过Windows 检查驱动器时,我看到一个名为的系统文件。有没有办法使Windows充当文件夹而不是系统文件? 问题答案: 从来没听说过。Cygwin不会将操作系统更新为具有符号链接,而是允许您从Cygwin Shell中“伪造”符号链接。您可以将外壳设置为使用Windows LNK文件,该文件可以执行您想要的操作,但是…

  • drwxr-xr-x 4根轮136 10月17日11:21。 drwxrwxr-x 5根轮170 10月17日11:21。 drwxr-xr-x 3根轮102 14 Jul 22:52 1.6.0.jdk drwxr-xr-x 11根轮374 10月17日11:21。 drwxr-xr-x 10根轮340 10月17日11:21。 lrwxr-xr-x 1根轮10 17 Oct 11:21 1.4

  • 问题内容: 如何使用GNU ld将符号链接到特定的固定地址,以便二进制文件仍可以在Linux(x86)中正常执行?不会访问这些符号,但是它们的地址很重要。 例如,我将具有以下结构: 我想链接到地址0x76543210,但通常会链接标准库和应用程序的其余部分。然后,应用程序将使用foobar的地址,但不会引用其后面的(可能不存在)内存。 此请求的基本原理是,可以在两个平台上使用相同的源:在本机平台上