gpt4 book ai didi

python - 虚拟环境 : python -m venv VS echo layout python3

转载 作者:太空狗 更新时间:2023-10-30 02:42:13 26 4
gpt4 key购买 nike

我对python相当陌生,但已经构建了一些小项目。我一直被教导并一直使用以下命令来启动虚拟环境:echo layout python3 > .envrc然后 direnv allow .

使用python -m venv <virtualenv name>有什么区别或优势?与 echo layout ?

最佳答案

这两个命令做完全不同的事情。
venvpython -m venv <env_name>命令 creates a virtual environment作为文件系统中充满文件的子目录。当它完成时,一个新的虚拟环境就在那里准备好让你激活和使用,但这个命令实际上还没有激活它。

激活虚拟环境以便您可以使用它是一个单独的步骤。执行此操作的命令取决于您使用的操作系统和 shell(请参阅上面链接的文档中的“激活虚拟环境的命令”表)。

激活命令仅更改您当前的命令行 shell session 。这就是您必须在启动的每个 shell session 中重新激活虚拟环境的原因。这种烦恼也是什么direnv存在来解决。
direnv.envrc
首先,关于echo命令...

在 MS-DOS 和 Unix/Linux(可能还有 Macintosh 的最新版本)中,echo layout python3只发出一个字符串 "layout python3" .
>重定向 echo命令的输出到文件,在本例中 .envrc .如果文件不存在,重定向会创建文件,然后用该字符串替换其内容(如果有)。最终结果是您当前工作目录中的一个文件,其中仅包含:

layout python3
.envrc文件和 direnv allow .envrcdirenv 使用的配置文件应用。每当您 cd进入包含 .envrc 的目录文件, direnv读取它并执行 direnv里面找到的说明。
direnv allow是一项安全功能。由于恶意 .envrc文件几乎可以隐藏在任何地方(尤其是在世界可写目录中,例如 /var/tmp/ ),您可以 cd进入一个看似无辜的目录,并从其他人的 .envrc 中获得令人讨厌的惊喜地雷。 allow命令专门将目录的 .envrc 列入白名单文件,如果发现 .envrc,显然会取消列出它文件已更改,因为它是 allow编。

最后回到 direnv
我不使用 direnv ,但是 layout <language> direnv命令来调整您的语言开发环境,在这种情况下激活 Python 3 虚拟环境。文档暗示它比这更“有用”,但他们没有详细说明。 (此外,您也可以编写自己的 direnv 函数,名为 python3 来做一些完全不同的事情。)

所有这些的目标是在您启动时自动启用您的 Python 虚拟环境 cd进入其目录。这消除了一种人为错误,即忘记启用虚拟环境。有关详细信息,请参阅 Richard North 的“ Practical direnv ”,尤其是“ Automatic Python virtualenv switching”部分。

(反)优势和意见

如果这是您经常犯的那种错误,并且您相信 direnv命令永远不会成为恶意的牺牲品 .envrc文件(或以其他方式“帮助”搞乱你正在处理的东西),那么它对你来说可能是值得的。

我认为最大的缺点是 direnv (除了安全隐患)是 它训练您忘记重要的一步 在使用 Python 虚拟环境中……即实际使用虚拟环境。对于它在不告诉您的情况下默默提供的任何其他“帮助”,这会加倍。 (我一直将“帮助”放在引号中这一事实应该表明我对此类实用程序的看法。)

如果您发现自己在某个地方工作 direnv未安装,您很可能会忘记激活您的虚拟环境,或者忘记其他任何事情 direnv一直在为你做。更有可能你会忘记如何去做。

关于python - 虚拟环境 : python -m venv VS echo layout python3,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37287964/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com