virtualenvs应该在哪里创建?

Ray*_*Ray 96 python virtualenv virtualenvwrapper

我很困惑,我应该把我的virtualenvs放在哪里.

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

django-admin.py startproject djangoproject
Run Code Online (Sandbox Code Playgroud)

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

virtualenv env
Run Code Online (Sandbox Code Playgroud)

它创建了与内部djangoproject目录相同级别的虚拟环境目录.

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

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

有没有正确的方法来做到这一点?

Dav*_*son 118

许多人使用virtualenvwrapper工具,它将所有virtualenvs保存在同一个地方(~/.virtualenvs目录),并允许创建和保存它们的快捷方式.例如,您可能会这样做:

mkvirtualenv djangoproject
Run Code Online (Sandbox Code Playgroud)

然后:

workon djangoproject
Run Code Online (Sandbox Code Playgroud)

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

pip freeze > requirements.txt
Run Code Online (Sandbox Code Playgroud)

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

pip install -r requirements.txt
Run Code Online (Sandbox Code Playgroud)

  • IMO不是一个很好的理由.这不是.gitignore的用途吗? (5认同)
  • *“将 virtualenv 目录保留在项目本身中可能是一个坏主意,因为您不想分发它”...但是许多其他语言的现有包管理器正是这样做的(例如 Rust/cargo、Haskell/stack /cabal,JS/npm)。 (3认同)

Cir*_*四事件 18

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

这是把目录库树,如在外面的一个主要优点~/.virtualenvsvirutalenvwrapper.

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

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

--relocatable,但它是已知的不完美.

另一个小优势:你没有.gitignore它.

如果不是那样的话,我只是将我的virtualenvs留在项目树本身,以保持相关的东西紧密相连.

这很好,因为您可能永远不会在项目中重复使用给定的virtualenv.

  • 这是我见过的在项目树之外创建virtualenv文件夹的唯一合理论据!其他指南似乎重复了"集中化"的教条,好像它本质上是一种最佳实践,而不是由于虚拟现实从根本上被打破而导致的不幸妥协(尽管非常有用!). (2认同)
  • @aderchox有一个权衡:将它放入项目树中,它树移动你必须重新安装,或者将它放在〜但管理项目之外的额外子目录。 (2认同)

Emm*_*ler 6

普遍接受的放置它们的位置与 virtualenvwrapper 的默认安装放置它们的位置相同: ~/.virtualenvs

相关:virtualenvwrapper 是一个优秀的工具,它为常见的 virtualenv 命令提供速记。http://www.doughellmann.com/projects/virtualenvwrapper/