来自 PyCharm 的虚拟环境与命令行

Virtual Environment from PyCharm vs. Command Line

我对创建 Python 应用程序还很陌生。我使用 PyCharm 闲逛了一些小教程和应用程序,并且总是使用 Virtualenv 环境创建一个新项目,最后在我的项目文件夹下有一个 "venv" 文件夹。我对此没有任何问题,但我又没有做过任何大型项目。

不过,我一直想学习Flask,想尝试以正确的方式创建一个新的Flask项目。我在许多教程中看到人们正在从 (Windows/Linux) 命令行创建(和激活)虚拟环境,即使他们使用的是 PyCharm,我只是想知道有什么区别?

当我在 PyCharm 中处理一个使用 Virtualenv 创建的项目时,我不会在处理它之前激活 venv。这是错误的还是由 PyCharm 处理的?如果 venv 是从命令行创建的怎么办?如果在那里处理项目,它是否仍由 PyCharm 处理(激活)。那么文件夹结构呢?这会受到虚拟环境创建方式的影响吗?在虚拟环境中创建 Flask 项目时,是否可以在某个地方找到一些 "best practices" 用于设置/文件夹结构?

PyCharm 为您激活 VirtualEnv,如果它被配置为使用一个并告诉它在哪里(更具体地说,VirtualEnv 中相应的 Python 二进制文件在哪里)。

手动创建的 VirtualEnvs 和 PyCharm 创建的 VirtualEnvs 之间没有真正的区别。 (除了你 select 创建一个框架之外,以防它与 PyCharm 配置的不同。)

如果需要,您可以手动创建一个,然后指向 PyCharm。在创建项目期间或稍后使用设置对话框(请参阅设置 -> 项目 -> 项目解释器)。然后它将以相同的方式对待它,并在 IDE.

内部工作时为您激活它

虚拟环境几乎只是一个文件夹,用于存储已安装的 Python 包并将它们与系统的其余部分隔离开来。这样您就可以处理不同的项目,这些项目可能都对外部包有竞争需求,而不会发生冲突。 "Activating" 虚拟环境只是在您当前 shell 中设置某些环境变量,因此它将使用来自该环境的包。 "Activating" 环境的影响绝不会超出您当前的 shell。因此,在命令行上激活环境不会对 PyCharm.

做任何事情

PyCharm 集成了一个 Python 解释器来为您提供许多额外的功能。你告诉 PyCharm 你想为你的项目使用哪个解释器,它会找出它有哪些可用的包,它是什么版本,并自动为 运行 将你的代码从 PyCharm 等。您可以告诉 PyCharm 使用系统的 Python 解释器或现有的虚拟环境,甚至使用它来创建新环境。除了在项目设置中 select 右 interpreter/environment 之外,您不需要做任何特殊的事情。

如果您不打算从命令行使用环境,则没有理由从命令行激活它。当然,使用 Flask 并从命令行 运行ning 其服务器并将其 运行ning 保持在后台可能会有用。不确定 PyCharm 是否会给你一个简单的或集成的选项来在后台拥有持久进程 运行。您仍然可以 select PyCharm 中的相同虚拟环境,并直接从 PyCharm 使用它来 运行 您在其中的测试,使用它的调试器等

我更喜欢将 venv 放在项目文件夹之外,并将所有 venvs 存储在 ~/.virtualenvs/ 之类的地方。它整理了项目文件夹并防止意外地将这些文件签入版本控制系统。

I was just wondering what the difference is?

有许多用于创建和使用虚拟环境的工具,它们之间没有区别,它们之间的唯一区别是它们的命令语法(或者它与用户交互的方式,例如对于 Pycharm 你设置一些设置通过 GUI)。

Is this wrong or is this something that is handled by PyCharm?

没什么问题。只要您的项目根目录中有一个 venv(或 .venv)目录并且它对任何用户都是可执行的,Pycharm 就会使用它并为您激活这个虚拟环境(不告诉你)。如果 Pycharm 无法做到这一点,(因为找不到 venv 或 activating/executing 它!)那么它会向您显示消息来解决它的问题并且它不能 运行 您的项目,直到你修复它们。

最好在项目根目录的 .venv 目录中创建虚拟环境。 (有点常规)

另见 python virtual environments and configuring pycharm virtualenv