0

我对创建 Python 应用程序相当陌生。我玩弄了一些使用 PyCharm 的小教程和应用程序,并且总是使用 Virtualenv 环境创建一个新项目,最后在我的项目文件夹下有一个“venv”文件夹。我对此没有任何问题,但话又说回来,我没有做过任何大型项目。

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

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

4

3 回答 3

3

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

手动创建的 VirtualEnvs 和 PyCharm 创建的没有真正的区别。(除了您选择创建的框架,以防这与 PyCharm 的配置不同。)

如果需要,您可以手动创建一个,然后将 PyCharm 指向它。在创建项目期间或稍后使用“设置”对话框(请参阅设置 -> 项目 -> 项目解释器)。然后,它不会对它进行不同的处理,并在您在 IDE 中工作时为您激活它。

于 2019-10-28T11:07:38.473 回答
2

虚拟环境几乎只是一个文件夹,用于存储已安装的 Python 包并将它们与系统的其余部分隔离。这样您就可以处理可能对外部包都有竞争要求的不同项目,而不会陷入冲突。“激活”虚拟环境只是在您当前的 shell 中设置某些环境变量,因此它将使用该环境中的包。“激活”环境永远不会对您当前的 shell 产生任何影响。因此,在命令行上激活环境不会对 PyCharm 做任何事情。

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

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

我更喜欢将项目文件夹保留在venv项目文件夹之外并将所有 venvs 存储在其中~/.virtualenvs/。它整理项目文件夹并防止意外将这些文件签入版本控制系统。

于 2019-10-28T11:17:43.130 回答
2

我只是想知道有什么区别?

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

这是错误的还是由 PyCharm 处理的?

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

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

另请参阅python 虚拟环境配置 pycharm virtualenv

于 2019-10-28T12:03:44.803 回答