我很困惑我应该把我的虚拟物放在哪里。
在我的第一个django项目中,我使用命令
创建了项目django-admin.py startproject djangoproject
然后我进入djangoproject目录并运行命令
virtualenv env
创建了与内部djangoproject
目录相同级别的虚拟环境目录。
这是为这个特定项目创建virtualenv的错误位置吗?
我的印象是大多数人将他们所有的虚拟物品放在一个完全不同的目录中,例如: ~/virtualenvs
,然后使用virtualenvwrapper在它们之间来回切换。
有没有正确的方法呢?
答案 0 :(得分:111)
许多人使用virtualenvwrapper工具,它将所有virtualenvs保存在同一个地方(~/.virtualenvs
目录),并允许创建和保留它们的快捷方式。例如,您可以这样做:
mkvirtualenv djangoproject
然后再说:
workon djangoproject
将virtualenv目录保留在项目本身中可能是一个坏主意,因为您不想分发它(它可能特定于您的计算机或操作系统)。相反,请使用pip保留requirements.txt文件:
pip freeze > requirements.txt
并分发。这将允许其他人使用您的项目将所有相同的要求重新安装到他们的virtualenv中:
pip install -r requirements.txt
答案 1 :(得分:17)
更改virtualenv目录的位置会破坏它
这是将目录放在存储库树之外的一个主要优点,例如在~/.virtualenvs
下virutalenvwrapper
。
否则,如果将它保留在项目树中,移动项目位置将打破virtualenv。
请参阅:Renaming a virtualenv folder without breaking it
有--relocatable
,但众所周知不完美。
另一个小优势:您不必.gitignore
。
如果不是这样的话,我只是将我的virtualenvs留在项目树本身,以保持相关的东西紧密相连。
这很好,因为您可能永远不会在项目中重复使用给定的virtualenv。
答案 2 :(得分:4)
普遍接受的放置它们的位置与virtualenvwrapper的默认安装位置相同:~/.virtualenvs
相关:virtualenvwrapper是一个出色的工具,可以为常见的virtualenv命令提供缩写。 http://www.doughellmann.com/projects/virtualenvwrapper/
答案 3 :(得分:0)
如果您使用pyenv install Python
,那么pyenv-virtualenv将是最佳做法。如果设置.python-version
文件,则可以在更改工作文件夹时自动激活或取消激活虚拟环境。 Pyenv-virtualenv
还将所有虚拟环境放入$HOME/.pyenv/versions
文件夹。
答案 4 :(得分:0)
根据我的个人经验,我建议将所有虚拟环境组织在一个目录中。除非有人具有非常敏锐的内存并且可以记住分散在文件系统中的文件/文件夹。
不太喜欢仅使用其他工具来管理虚拟环境。如果我在VSCode中配置包含所有虚拟环境的目录(python.venvPath
),它可以自动识别所有虚拟环境。