应该在哪里创建virtualenvs?


106

我对应该在哪里放置我的虚拟环境感到困惑。

在我的第一个django项目中,我使用以下命令创建了该项目

django-admin.py startproject djangoproject

然后,我进入djangoproject目录并运行命令

virtualenv env

在与内部djangoproject目录相同级别上创建了虚拟环境目录。

这是为特定项目创建virtualenv的错误位置吗?

我给人的印象是,大多数人将所有virtualenv放在一个完全不同的目录中,例如~/virtualenvs,然后使用virtualenvwrapper在它们之间来回切换。

有正确的方法吗?

Answers:


128

许多人使用virtualenvwrapper工具,该工具将所有virtualenvs保留在同一位置(~/.virtualenvs目录),并允许在其中创建和保存它们的快捷方式。例如,您可以这样做:

mkvirtualenv djangoproject

然后再:

workon djangoproject

将virtualenv目录保留在项目本身中可能是一个坏主意,因为您不想分发它(它可能特定于您的计算机或操作系统)。而是使用pip保留一个requirements.txt文件:

pip freeze > requirements.txt

并分发。这将允许使用您的项目的其他人使用以下命令将所有相同的要求重新安装到他们的virtualenv中:

pip install -r requirements.txt

太好了,我还没有研究过点子的东西,但是如果我有需要的话,这会派上用场
Joran Beasley 2012年

pip在Django社区中非常流行,并且非常易于使用。
大卫·罗宾逊

谢谢大卫,这就是我的想法。我知道需求的事情,并且正在这样做。我只是不确定静脉应该去哪里。您对此的评论是特定于操作系统的,这是按照您的建议做的很好的证明。

创建虚拟环境后,是否可以移动它?我不经意间将其放在我的项目目录中
James Wierzba 2015年

6
海事组织没有充分理由。这不是.gitignore的目的吗?
Josh Noe '18年

24

更改virtualenv目录的位置会破坏它

这是把仓库树,例如目录以外的下一个优势~/.virtualenvsvirutalenvwrapper

否则,如果将其保留在项目树中,则移动项目位置将破坏virtualenv。

请参阅:重命名virtualenv文件夹而不破坏它

有,--relocatable但是众所周知它并不完美。

另一个次要优势:您不必这样做.gitignore

将其忽略到项目树本身的好处是:

  • 使相关的东西保持在一起。
  • 您可能永远不会在项目之间重用给定的virtualenv,因此将其放置在其他位置不会带来太多优势

3
这是我在项目树之外创建virtualenv文件夹时见过的唯一合理的论点!其他指导似乎只是在重复“集中化”教条,好像它本质上是一种最佳实践,而不是由于虚拟环境从根本上被破坏而不幸的妥协(尽管非常有用!)。
rob3c

对不起,有些事情对我来说还不清楚,所以建议您在项目树中创建它,然后“忽略它”还是在〜/ .virtualenvs中创建它?“如果不是那样的话”指的是什么?
aderchox

1
@aderchox需要权衡:将其放入项目树中,并且它必须移动树,您必须重新安装它,或将其放置在〜上,但要在项目外部的额外子目录中进行管理。
西罗Santilli郝海东冠状病六四事件法轮功


0

如果使用pyenv install Python,则pyenv-virtualenv将是最佳做法。如果设置了.python-version文件,则可以在更改工作文件夹时自动激活或停用虚拟环境。Pyenv-virtualenv还将所有虚拟环境放入$HOME/.pyenv/versions文件夹中。


0

根据我的个人经验,我建议将所有虚拟环境组织在一个目录中。除非有人具有非常敏锐的内存并且可以记住分散在整个文件系统中的文件/文件夹。不太喜欢仅使用其他工具来管理虚拟环境。在VSCode中,如果我的configure(python.venvPath)目录包含所有虚拟环境,则它可以自动识别所有虚拟环境。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.