我正在设置一台新笔记本电脑,我希望设置几个不同的编程环境而不让它们互相踩踏。
我的实际用途多种多样,但让我们举一个具体的例子:我维护 python 2.7,并开发 python 3.newest。
完整的腰带解决方案是为我使用的每个系统配备一个 VirtualBox(或类似的),但有更好的方法吗? (不要害怕提供非常明显的答案 - 我是一个最近的 Linux 用户,如果有一些“每个人都听说过”的东西,很有可能我还没有听说过。
为了清楚起见 - 我需要的单独环境适用于各种不同版本gcc
的clang
.两个不同版本的go
,python
如上所述,太多版本的dotnet
(尽管并行安装时似乎一个运行良好),各种版本的node.js
,我确信我错过了一些东西 - 此时我只是在工作在最新版本的zig
和rust
- 但谁能说未来会带来什么?因此,无论如何,我最好为他们提供自己的环境,这样如果将来发生这种情况,我就不会把事情弄混了。
答案1
有几个解决方案;一般来说,几乎任何语言环境都可以配置(通常通过适当位置的配置文件或环境变量,例如Python $PYTHONPATH
)来搜索特定位置的模块; Linux 查找可执行文件 ( $PATH
) 和库 ( $LD_LIBRARY_PATH
) 的机制也是如此;使用独立环境实际上通常归结为修改一些环境变量。
就 Python 而言,Python 本身有相应的方法 ( python -m venv
),但也有很多包/前缀管理器 ( conda
/ mamba
)。对于其他语言也是如此(Rust 的cargo
crates 设计精良,JavaScript 的 cratenpm
完全不同,PHP 的 PEAR,……)。
如果您需要更多隔离,容器可能适合您:完整的操作系统文件系统树“嵌入”在您的普通树中,只有您明确共享的内容才能与“主”操作系统交换任何内容。
总而言之,有很多有很多不同的方法,对于大多数语言,都有特定的工具可以让你的生活更轻松。你必须根据语言逐一查找。
答案2
要添加到马库斯的答案中,您可以使用 nix 或 guix 按照您的要求以声明方式设置环境,尽管有一个学习曲线。我更喜欢使用 nix。更多阅读:https://nixos.org/guides/nix-pills/