繁体   English   中英

PyCharm 与命令行的虚拟环境对比

[英]Virtual Environment from PyCharm vs. Command Line

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

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

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

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

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

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

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

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

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

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

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

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

这是错误的还是 PyCharm 处理的东西?

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM