2024-06-01 03:49:42 发布
网友
我对python还比较陌生,但已经构建了一些小项目。我被教导过,并且一直使用以下命令来启动虚拟环境:echo layout python3 > .envrc然后direnv allow。在
echo layout python3 > .envrc
direnv allow
使用python -m venv <virtualenv name>与echo layout的区别或优势是什么?在
python -m venv <virtualenv name>
echo layout
这两个命令的作用完全不同。在
venv
python -m venv <env_name>命令creates a virtual environment作为文件系统中充满文件的子目录。当它完成后,一个新的虚拟环境就在那里等待你激活和使用,但是这个命令实际上还没有激活它。在
python -m venv <env_name>
激活虚拟环境以便您可以使用这是一个单独的步骤。执行此操作的命令取决于您使用的操作系统和shell(请参阅上面链接的文档中的“命令激活虚拟环境”表)。在
激活命令只改变当前的命令行shell会话。这就是为什么每次启动shell会话时都必须重新激活虚拟环境。这种烦恼也是direnv所要解决的。在
direnv
echo
在MS-DOS和Unix/Linux(可能还有最新版本的Macintosh)中,echo layout python3只发出一个字符串"layout python3"。在
echo layout python3
"layout python3"
>将echo命令的输出重定向到一个文件,在本例中是.envrc。如果文件不存在,则重定向将创建该文件,然后将其内容(如果有)替换为该字符串。最终结果是当前工作目录中的一个文件,其中仅包含:
>
.envrc
layout python3
.envrc是direnv应用程序使用的配置文件。每当您cd进入包含.envrc文件的目录,direnv就会读取该文件并执行其中的direnv指令。在
cd
direnv allow是一种安全功能。由于恶意的.envrc文件几乎可以隐藏在任何地方(特别是在世界上可写的目录中,比如/var/tmp/),你可以cd进入一个看似无辜的目录,然后从别人的.envrc地雷中得到令人讨厌的惊喜。allow命令专门白列目录的.envrc文件,如果发现.envrc文件自allow编辑后发生了更改,则会将其取消列出
/var/tmp/
allow
我没有使用direnv,但是^{}是一个direnv命令,用于调整环境,以便用语言开发,在本例中激活了python3虚拟环境。这些文件暗示,这比仅仅是这样更“有用”,但他们没有详细说明。(另外,您还可以编写自己的direnv函数,该函数名为python3,它的功能完全不同。)
python3
所有这一切的目标是,一旦您cd进入Python虚拟环境的目录,就自动启用它。这消除了一种人为错误,即忘记启用虚拟环境。有关详细信息,请参阅Richard North的“Practical ^{}”,尤其是“Automatic Python ^{} switching”部分。在
如果这是您经常犯的错误,和您相信direnv命令永远不会成为恶意.envrc文件的牺牲品(或者“有益地”扰乱您正在处理的东西),那么它对您来说可能是值得的。在
我认为direnv(除了安全问题之外)最大的缺点是,它训练您忘记使用Python虚拟环境的一个重要步骤。。。也就是说,实际上是在使用虚拟环境。对于它不告诉你就默默提供的任何其他“帮助”来说,这要加倍。(我一直在引号中加上“help”这一事实说明了我对这种实用程序的看法。)
如果您发现自己在某个未安装direnv的地方工作,那么您很可能会忘记激活您的虚拟环境,或者忘记{}为您做的其他事情。而你忘记如何去做的可能性更大。在
这两个命令的作用完全不同。在
venv
python -m venv <env_name>
命令creates a virtual environment作为文件系统中充满文件的子目录。当它完成后,一个新的虚拟环境就在那里等待你激活和使用,但是这个命令实际上还没有激活它。在激活虚拟环境以便您可以使用这是一个单独的步骤。执行此操作的命令取决于您使用的操作系统和shell(请参阅上面链接的文档中的“命令激活虚拟环境”表)。在
激活命令只改变当前的命令行shell会话。这就是为什么每次启动shell会话时都必须重新激活虚拟环境。这种烦恼也是
direnv
所要解决的。在direnv
和{首先,关于
echo
命令在MS-DOS和Unix/Linux(可能还有最新版本的Macintosh)中,
echo layout python3
只发出一个字符串"layout python3"
。在>
将echo
命令的输出重定向到一个文件,在本例中是.envrc
。如果文件不存在,则重定向将创建该文件,然后将其内容(如果有)替换为该字符串。最终结果是当前工作目录中的一个文件,其中仅包含:.envrc
文件和direnv allow
.envrc
是direnv
应用程序使用的配置文件。每当您cd
进入包含.envrc
文件的目录,direnv
就会读取该文件并执行其中的direnv
指令。在direnv allow
是一种安全功能。由于恶意的.envrc
文件几乎可以隐藏在任何地方(特别是在世界上可写的目录中,比如/var/tmp/
),你可以cd
进入一个看似无辜的目录,然后从别人的.envrc
地雷中得到令人讨厌的惊喜。allow
命令专门白列目录的.envrc
文件,如果发现.envrc
文件自allow
编辑后发生了更改,则会将其取消列出最后,回到
direnv
我没有使用} 是一个
direnv
,但是^{direnv
命令,用于调整环境,以便用语言开发,在本例中激活了python3虚拟环境。这些文件暗示,这比仅仅是这样更“有用”,但他们没有详细说明。(另外,您还可以编写自己的direnv
函数,该函数名为python3
,它的功能完全不同。)所有这一切的目标是,一旦您} ”,尤其是“Automatic Python ^{} switching ”部分。在
cd
进入Python虚拟环境的目录,就自动启用它。这消除了一种人为错误,即忘记启用虚拟环境。有关详细信息,请参阅Richard North的“Practical ^{(不)优势和意见
如果这是您经常犯的错误,和您相信
direnv
命令永远不会成为恶意.envrc
文件的牺牲品(或者“有益地”扰乱您正在处理的东西),那么它对您来说可能是值得的。在我认为
direnv
(除了安全问题之外)最大的缺点是,它训练您忘记使用Python虚拟环境的一个重要步骤。。。也就是说,实际上是在使用虚拟环境。对于它不告诉你就默默提供的任何其他“帮助”来说,这要加倍。(我一直在引号中加上“help”这一事实说明了我对这种实用程序的看法。)如果您发现自己在某个未安装}为您做的其他事情。而你忘记如何去做的可能性更大。在
direnv
的地方工作,那么您很可能会忘记激活您的虚拟环境,或者忘记{相关问题 更多 >
编程相关推荐