【问题标题】:Installing Django and modules in virtual environment在虚拟环境中安装 Django 和模块
【发布时间】:2020-06-22 22:56:36
【问题描述】:

我的问题是我是否必须每次在我的虚拟环境中安装 django 才能运行我的 python 文件?这会占用我机器上的大量空间吗?我的项目也使用“matplotlib”,我创建的每个虚拟环境也要求我导入 matplotlib 模块。它越来越烦人。我每次都必须这样做吗?

我是 Django 新手。我想在 django 中运行一些 python 文件但它们不起作用,所以经过一些研究我发现我需要在虚拟环境中运行我的 pycharm 项目才能运行这些 python 文件。

我的文件夹看起来像这样 pycharmProjects -> 我的项目 我进入 pycharmProjects 并使用“pienv shell”设置虚拟环境。然后我运行“python3 manage.py runserver”。事实证明,我必须在文件运行之前在虚拟环境中安装 django。

【问题讨论】:

  • 您不必“必须”使用虚拟环境。如果您愿意,您可以选择全局安装和运行所有内容。但是当您完成一些项目时,您很快就会了解“依赖地狱”的含义:) 所以是的,说真的——您确实“必须”这样做。它会占用一点空间,但与现代硬盘驱动器相比可以忽略不计。
  • 如果你不希望你的需求在不同的项目中发生冲突,那么你应该让每个项目都有自己的 virtualenv(这是它的主要用例)。通常你会在 requirements.txt 中列出需求并从中安装它们。你也可以检查 pipenv

标签: python django


【解决方案1】:

简短的回答是否定的,您根本不必使用虚拟环境,而是可以在全局范围内安装您的依赖项。但是,您很快就会发现它会导致很多问题。您创建虚拟环境的主要原因是控制您的依赖关系并防止由于它们的线路在项目之间交叉而可能导致的错误。

【讨论】:

    【解决方案2】:

    简短回答是。

    如果你创建了一个 virualenv,你必须安装你的程序需要的所有包。

    长答案:

    您可以在系统范围内安装 django,然后使用该选项创建一个 virtualenv --system-site-packages 然后将从您全局安装的 python 中使用 django。 (或者你只在你的全局 python 中安装所有东西,我个人认为这不是一个好习惯)

    如果您处理许多不同的项目,我认为如果每个项目使用一个 virtualenv,您将避免很多麻烦。 麻烦意味着一个项目中断,因为另一个项目的一个 pip install 更改了一个包的版本,一个项目无法处理较新的版本。

    我建议为每个项目创建一个requirements.txt 文件,列出依赖项,然后您可以使用以下命令创建 virtualenv pip install -r requirements.txt

    如果你有requirement.txt 文件,那么如果回到旧项目,你可以相当快地创建虚拟环境,并且只要磁盘空间用完,你就可以删除虚拟环境。如果您想安全起见,请在删除 virtualenv 之前输入pip freeze > pipfreeze.txt,如果您想创建具有相同模块和相同版本的虚拟环境,请使用pip install -r pipfreeze.txt。

    如果在类似 linux 的系统上工作,您可能还想查看 direnv 或 autoenv。 这将在切换到项目的工作目录时自动切换到所需的 virtualenv。

    【讨论】:

      猜你喜欢
      • 2018-12-02
      • 2019-06-14
      • 1970-01-01
      • 2016-11-11
      • 1970-01-01
      • 2018-09-26
      • 1970-01-01
      • 2018-07-03
      • 1970-01-01
      相关资源
      最近更新 更多