- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我对python相当陌生,但已经构建了一些小项目。我一直被教导并一直使用以下命令来启动虚拟环境:echo layout python3 > .envrc
然后 direnv allow
.
使用python -m venv <virtualenv name>
有什么区别或优势?与 echo layout
?
最佳答案
这两个命令做完全不同的事情。venv
python -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
.envrc
是
direnv
使用的配置文件应用。每当您
cd
进入包含
.envrc
的目录文件,
direnv
读取它并执行
direnv
里面找到的说明。
direnv allow
是一项安全功能。由于恶意
.envrc
文件几乎可以隐藏在任何地方(尤其是在世界可写目录中,例如
/var/tmp/
),您可以
cd
进入一个看似无辜的目录,并从其他人的
.envrc
中获得令人讨厌的惊喜地雷。
allow
命令专门将目录的
.envrc
列入白名单文件,如果发现
.envrc
,显然会取消列出它文件已更改,因为它是
allow
编。
direnv
direnv
,但是
layout <language>
是
direnv
命令来调整您的语言开发环境,在这种情况下激活 Python 3 虚拟环境。文档暗示它比这更“有用”,但他们没有详细说明。 (此外,您也可以编写自己的
direnv
函数,名为
python3
来做一些完全不同的事情。)
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/
在过去的几个月里,我一直在研究 Haskell,我遇到了一个我不太确定如何处理的单子(monad)的情况。 我有一个 a -> m a 类型的值第二个类型为 m (a -> a)我需要对它们进行组合,
仿函数有 (a -> b) -> m a -> m b 应用程序有 f (a -> b) -> f a -> f b Monad 有 m a -> (a -> m b) -> m b 但是,是否有扩展
我是 Haskell 的新手,我想知道是否有比 Hoogle 更好的方法来确定一个库功能是否重复? 举个例子:我有很多函数f :: Monad a => a -> m a我想链接在一起,比如 f123
将存储在一系列列表中的 m、m、n 维数组组合成一个 m、m、n 维数组的方法是什么? 示例: 这是三个包含 m,m,n 维数组的列表: list1 <- array (1, dim = c(5, 5
有没有办法写一个函数f::(a -> b -> ... -> t) -> (Monad m => m a -> m b -> ... -> m t ),基本上是 liftMn 对于任何 n? (编辑:
我有一个像这样的 pandas 数据框: df = pd.DataFrame({'A':[1,3,2,9],'B':[2,1,2,7],'C':[7,2,4,6],'D':[8,1,6,4]},ind
这个问题来自文章“Trivial Monad”,地址:http://blog.sigfpe.com/2007/04/trivial-monad.html 。提供的答案是 h x y = x >>= (
所以>>= :: m a -> (a -> m b) -> m b和>> :: m a -> m b -> m b . 而 f b -> f a . 但我想要一些能m a -> (a -> m b)
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 这个问题似乎与 help center 中定义的范围内的编程无关。 . 关闭 3 年前。 Improve
当我安装 rakudo来源: $ git clone git@github.com:rakudo/rakudo.git $ cd rakudo $ perl Configure.pl --gen-mo
我正在尝试通过查看一些练习来提高我的 Idris 技能 Software Foundations (最初是为 Coq 设计的,但我希望对 Idris 的翻译不会太糟糕)。我在使用 "Exercise:
我想知道以下是否可行。 与服务器交换密码时,应保护密码。因此,用户可以使用生成的 key kUser 来加密密码。 Encrypt(m, kUser) 生成加密消息 eU(m)。现在用户将此信息发送到
这两个表之间存在什么样的关系(1:1、1:m、m:m,等等)? CREATE TABLE IF NOT EXISTS `my_product` ( `id` int(11) NOT NULL au
有人可以解释类型的含义以及如何实现吗? class Foldable f where foldMap :: (Monoid m) => (a -> m) -> f a -> m 基于 https:
例如,在 MVC 应用程序中,我可以使用 Html 助手来创建这样的标签: @Html.LabelFor(m => m.ProductName) 我没有在任何地方声明变量“m”,但 IDE 会自动找出
更新:澄清、更明确的重点和缩短的示例: 我可以避免 M op+(M&&,M&&) 过载吗?假设,我想很好地处理 RValues?我想其他三个重载是必需的。 我首先使用 (&&,&&) 重载的原因: 通
假设我有一个函数,它接受两个向量并返回一个整数,例如一个向量中也存在另一个向量中的元素数量。喜欢: f m [,1] [,2] [,3] [1,] "c" "i" "c" [2,] "
我想将字符串(字幕)转换为: 585 00:59:59,237 --> 01:00:01,105 - It's all right. - He saw us! 586 01:00:01,139 -->
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 要求提供代码的问题必须表现出对所解决问题的最低限度理解。包括尝试过的解决方案、为什么它们不起作用,以及预
是否可以将 Linux 中的大文件将 d.m.Y h:m:s 转换为 Y-d-m h:m:s? 示例数据 "30.07.2016 00:00:00",DN123,PAPN,PAPN,TEST,9189
我是一名优秀的程序员,十分优秀!