Virtualenv、Django 和 PyCharm。文件结构

Virtualenv, Django and PyCharm. File structure

我是使用 VirtualEnv 的新手,最近尝试使用 PyCharm 创建一个。在这个过程中,PyCharm 要求我指定项目位置、应用程序名称和 VirtualEnv 名称和位置。我的疑问是,在我指定 VirtualEnv 的名称和位置之后,Django 项目文件的位置必须在 VirtualEnv 中吗?或者可以将 VirtualEnv 文件放在与 Django 项目文件不同的位置?

也许我不明白 VirtualEnv 的用途。也许,VirtualEnv 只是我项目的依赖列表,Python 版本,Django 版本,Pip 版本,Jinja2 版本和所有其他需要的文件,但不一定是 Django 应用程序文件(正在开发的网站) .

提前致谢。

是的,我想你误解了 virtualenv 的作用:

https://virtualenv.pypa.io/en/latest/

The basic problem being addressed is one of dependencies and versions, and indirectly permissions. Imagine you have an application that needs version 1 of LibFoo, but another application requires version 2. How can you use both these applications? If you install everything into /usr/lib/python2.7/site-packages (or whatever your platform’s standard location is), it’s easy to end up in a situation where you unintentionally upgrade an application that shouldn’t be upgraded.

您的项目文件不需要(也不应该)位于 virtualenv 文件所在的位置。

virtualenv 将应用程序的 python 依赖项安装到正在使用的特定 virtualenv 的文件夹中。

假设您没有使用 virtualenv,依赖项将安装到您系统的 site-packages 文件夹中。依赖项未安装在您的项目目录中,并且您的项目目录不在系统的站点包目录中。

使用 virtualenv 不会改变这一点,它只会改变依赖项的安装位置。

virtualenv 不仅仅是一个依赖列表!它实际上拥有所有模块。将 virtualenv 视为 space,它将项目使用的所有包与先前或稍后安装的其他包隔离开来 time.Yes,有一个选项让 virtualenv 使用属于 "outside" 环境的包,但这只是一个选项。 拥有 virtualenv 的主要目的是让用户能够使用他选择的软件包版本并将它们与 space 的其余部分隔离开来。通常,属于特定 virtualenv 的包列表被捕获到文件 requirements.txt 中。如果您想 运行 项目在另一台机器上或与某人共享,拥有 requirements.txt 将使在 virtualenv[= 中通过 pip install -r requirement.txt 重新创建环境变得容易19=]