- mongodb - 在 MongoDB mapreduce 中,如何展平值对象?
- javascript - 对象传播与 Object.assign
- html - 输入类型 ="submit"Vs 按钮标签它们可以互换吗?
- sql - 使用 MongoDB 而不是 MS SQL Server 的优缺点
Python 3.3 在其标准库中包含新包 venv
.它有什么作用,它与似乎与正则表达式匹配的所有其他软件包有何不同 (py)?(v|virtual|pip)?env
?
最佳答案
给初学者的建议:
这是我个人对初学者的建议:从学习开始 virtualenv
和 pip
,可以在 Python 2 和 3 以及各种情况下使用的工具,一旦您开始需要它们,就可以选择其他工具。
PyPI 包不在标准库中:
virtualenv
是一个非常流行的工具,可以为 Python 库创建隔离的 Python 环境。如果您不熟悉这个工具,我强烈建议您学习它,因为它是一个非常有用的工具,我将在本答案的其余部分与它进行比较。 env/
),然后修改
PATH
环境变量以自定义前缀
bin
目录(例如:
env/bin/
)。
python
的精确副本或
python3
二进制文件放在这个目录中,但 Python 被编程为首先在环境目录中查找与其路径相关的库。它不是 Python 标准库的一部分,但受到 PyPA(Python Packaging Authority)的正式祝福。激活后,您可以使用
pip
在虚拟环境中安装软件包。 .
pyenv
用于隔离 Python 版本。例如,您可能想要针对 Python 2.7、3.6、3.7 和 3.8 测试您的代码,因此您需要一种在它们之间切换的方法。激活后,它会添加前缀 PATH
环境变量 ~/.pyenv/shims
,其中有与 Python 命令( python
、 pip
)匹配的特殊文件。这些不是 Python 提供的命令的副本;它们是特殊的脚本,可以根据 PYENV_VERSION
动态决定运行哪个版本的 Python。环境变量,或 .python-version
文件,或 ~/.pyenv/version
文件。 pyenv
还可以使用命令 pyenv install
简化下载和安装多个 Python 版本的过程。 .pyenv-virtualenv
是 pyenv
的插件与 pyenv
的作者相同, 允许您使用 pyenv
和 virtualenv
同时方便。但是,如果您使用 Python 3.3 或更高版本,pyenv-virtualenv
将尝试运行 python -m venv
如果可用,而不是 virtualenv
.您可以使用 virtualenv
和 pyenv
一起没有pyenv-virtualenv
,如果您不想要便利功能。virtualenvwrapper
是对 virtualenv
的一组扩展(见 docs)。它为您提供类似 mkvirtualenv
的命令, lssitepackages
,尤其是 workon
用于在不同的 virtualenv
之间切换目录。如果您想要多个 virtualenv
,此工具特别有用。目录。pyenv-virtualenvwrapper
是 pyenv
的插件与 pyenv
的作者相同, 方便整合 virtualenvwrapper
进入 pyenv
.pipenv
旨在结合 Pipfile
, pip
和 virtualenv
成命令行上的一个命令。 virtualenv
目录通常放在 ~/.local/share/virtualenvs/XXX
, 与 XXX
是项目目录路径的哈希值。这与 virtualenv
不同,其中目录通常位于当前工作目录中。 pipenv
旨在用于开发 Python 应用程序(而不是库)。有替代 pipenv
,例如 poetry
,我不会在这里列出,因为这个问题只与名称相似的包有关。pyvenv
(不要与上一节中的 pyenv
混淆)是 Python 3 附带的脚本,但 deprecated in Python 3.6因为它有问题(更不用说令人困惑的名称)。在 Python 3.6+ 中,完全等效的是 python3 -m venv
.venv
是 Python 3 附带的包,您可以使用 python3 -m venv
运行它(尽管出于某种原因,一些发行版将其分离到一个单独的发行版包中,例如 Ubuntu/Debian 上的 python3-venv
)。它的用途与 virtualenv
相同,但只有其功能的一个子集( see a comparison here )。 virtualenv
继续比venv
更受欢迎,尤其是因为前者同时支持 Python 2 和 3。关于python - venv、pyvenv、pyenv、virtualenv、virtualenvwrapper、pipenv 等有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41573587/
平时很少在jquery中用到this。查看代码时发现用到了,就调试出this的值,心想原来如此。还是挺有用的。这里总结一下this与$(this)的区别和使用。 $(this)生成的是什么?
使用单例类和应用程序范围的托管 bean 来保存应用程序数据有区别吗? 我需要查找某些 JNDI 资源,例如远程 bean 接口(interface),因此我为自己编写了一个单例来缓存我的引用并且只允
如果您仔细查看包含的图片,您会注意到您可以使用 Eclipse IDE 重构 Groovy 代码并将方法转换为闭包,反之亦然。那么,闭包到底是什么,它与方法有什么不同呢?有人可以举一个使用闭包的好例子
vagrant box repackage有什么区别( docs ) 和 vagrant package ( docs )? 我意识到 vagrant package仅适用于 VirtualBox 提
我想看看是否有人可以解释为什么以下代码适用于 valueOf 但不适用于其他代码。 import java.math.BigDecimal; public class Change { publ
这个问题已经有答案了: 已关闭12 年前。 Possible Duplicates: What is Closures/Lambda in PHP or Javascript in layman te
This question already has answers here: Vagrant, Docker, Puppet, Chef (3个答案) 2年前关闭。 docker和chef有什么共同
以下代码在95%的机器上产生相同的输出,但是在几台机器上却有所不同。在 Debug模式下,输出: Changing from New to Fin OK 但在 Release模式下: Changing
////Creating Object var Obj; // init Object Obj= {}; 它们之间有什么区别两个? 有没有可能把它变成一个单行? 这样使用有什么好处吗?
我想找出定时器服务之间的区别。我应该使用哪个以及何时使用。我正在使用 Jboss 应用服务器。 1) java.ejb.Schedule。 @Schedule注解或配置自xml。 2) javax.e
我发现在 C++ 中可以通过三种不同的方式将对象传递给函数。假设我的类(class)是这样的: class Test { int i; public: Test(int x);
有什么区别。 public class Test { public static void main(String args[]) { String toBeCast = "c
如果我有一列,设置为主索引,设置为INT。 如果我不将其设置为自动递增,而只是将唯一的随机整数插入其中,与自动递增相比,这是否会减慢 future 的查询速度? 如果我在主索引和唯一索引为 INT 的
这两种日期格式有什么区别。第一个给出实际时间,第二个给出时间购买添加时区偏移值。 NSDateFormatter * dateFormatter = [[NSDateFormatter alloc]
如果有一个函数,请说foo: function foo() { console.log('bar'); } 那么在 JavaScript 中,从另一个函数调用一个函数有什么区别,如下所示: f
关闭。这个问题是opinion-based 。目前不接受答案。 想要改进这个问题吗?更新问题,以便 editing this post 可以用事实和引文来回答它。 . 已关闭 4 年前。 Improv
代码是什么: class Time { private: int hours; int minutes; int seconds; pu
我知道这是非常基本的,但有人介意解释一下这两个数组声明之间的区别吗: #include array myints; ...和: int myints[5]; ...以及为什么 myints.size
我学会了如何根据 http://reference.sitepoint.com/css/specificity 计算 css 特异性但是,基于this reference,我不明白伪类(来自c)和伪元
为什么在运行 2) 时会出现额外的空行?对我来说 1 就像 2。那么为什么 2) 中的额外行? 1) export p1=$(cd $(dirname $0) && pwd) #
我是一名优秀的程序员,十分优秀!