【问题标题】:Virtualenv, Django and PyCharm. File structureVirtualenv、Django 和 PyCharm。文件结构
【发布时间】:2015-03-29 02:20:27
【问题描述】:

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

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

提前致谢。

【问题讨论】:

    标签: python django virtualenv pycharm


    【解决方案1】:

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

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

    要解决的基本问题是依赖关系和版本之一,以及间接权限。想象一下,您有一个应用程序需要 LibFoo 版本 1,但另一个应用程序需要版本 2。您如何同时使用这两个应用程序?如果您将所有内容都安装到 /usr/lib/python2.7/site-packages(或任何您平台的标准位置),很容易导致您无意中升级不应升级的应用程序。

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

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

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

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

    【讨论】:

    • 感谢@DTing 的帮助。现在说得通了。你是对的,如果我不使用 VirtualEnv,我不会将我正在开发的网站的文件放在系统站点包目录中。这太荒谬了。这就是为什么 PyCharm IDE 询问我要将 VirtualEnv 文件夹放在哪里(以包含和隔离我的所有依赖项)以及 Django 生成的文件(我的网站)的位置。
    【解决方案2】:

    virtualenv 不仅仅是一个依赖列表!它实际上拥有所有模块。将virtualenv 视为一个空间,它将项目使用的所有包与之前或以后安装的其他包隔离开来。是的,可以选择让virtualenv 使用环境“外部”的软件包,但这只是一种选择。 拥有virtualenv 的主要目的是使用户能够使用他选择的软件包版本,并使它们与空间的其余部分隔离。通常,属于特定virtualenv 的包列表被捕获到一个文件requirements.txt 中。如果您想在不同的机器上运行该项目或与他人共享,拥有requirements.txt 将可以轻松地通过pip install -r requirement.txtvirtualenv 中重新创建环境

    【讨论】:

    • 感谢@flamenco 的帮助。
    猜你喜欢
    • 2013-11-29
    • 1970-01-01
    • 2016-06-26
    • 2016-11-18
    • 2015-08-27
    • 2021-02-22
    • 2019-01-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多