Python virtualenv 需要和它所属的项目在同一个地方创建吗?

Python virtualenv needs to be created in the same place with the project it belongs to?

最近我开始了一个基于Flask/Python的项目。现在我已经设置了环境——但是我从来没有在python中一步步创建项目,我在学习编程语言时只体验过小脚本和小应用程序。

我已经在同一个文件夹中安装并设置了所有依赖项,您可以在此处看到:

在 'env' - 我已经创建了虚拟环境。

在 'TheSocial' 中 - 是并且它将是应用程序本身。

我的问题是

1) 如果这个 'env' 将被移动或者它不是在 'project_py' 中创建的,我来自 'TheSocial' 的应用程序仍然可以 运行 在 vi​​rutalenv 中,或者不是吗?

2) 创建任何项目结构时是否需要遵守任何标准?

我也看到了一个已经回答的 Whosebug question ,但我想找出 问题 1)

的答案

解决这些问题的范围是为了了解真实项目的结构和设计是如何从头开始的。

1) 创建 virtualenv 会更改系统的 $PATH:

 $ echo $PATH
/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/MacGPG2/bin:/Users/wgonczaronek/bin:/usr/local/sbin
 $ source venv/bin/activate
 $ echo $PATH
/Users/wgonczaronek/Projects/django & flask security/CSP/csp-flask/venv/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/MacGPG2/bin:/Users/wgonczaronek/bin:/usr/local/sbin

activate 中有以下行负责:

VIRTUAL_ENV="/Users/wgonczaronek/Projects/django & flask security/CSP/csp-flask/venv"
export VIRTUAL_ENV

_OLD_VIRTUAL_PATH="$PATH"
PATH="$VIRTUAL_ENV/bin:$PATH"

这意味着当您移动环境时,这将不再有效。

2) 保持一致。在我的项目中,我喜欢 "encapsulate" git 存储库在同名目录中,我在其中保存我的虚拟环境和其他东西(我有一个特殊文件 FFF.txt 代表经常被遗忘的功能我在其中保存所有项目相关信息供个人使用 :D)。这让我可以在我想摆脱它时用一个命令在项目之后进行清理,而且我不会为我的环境的命名约定所困扰——我不必编辑 .gitignore。有些人喜欢使用 virtual env wrapper or pyenv 将所有虚拟环境保留在项目之外。只需试验一下,找出最适合您的方法。