PyCharm与命令行的虚拟环境

时间:2019-10-28 11:03:17

标签: python flask pycharm python-venv virtual-environment

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

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

当我在用Virtualenv创建的PyCharm项目中工作时,我不会在操作前激活venv。这是错误的还是PyCharm处理的事情?如果venv是从命令行创建的,该怎么办?如果在该项目上工作,它是否仍由PyCharm处理(激活)。文件夹结构又如何呢?这受虚拟环境创建方式的影响吗?在虚拟环境中创建Flask项目时,在哪里可以找到设置/文件夹结构的“最佳实践”?

3 个答案:

答案 0 :(得分:2)

PyCharm如果配置为使用VirtualEnv并告知其位置(更具体地讲,VirtualEnv中各个Python二进制文件的位置),则会为您激活VirtualEnv。

手动创建的VirtualEnv和PyCharm创建的虚拟Env之间并没有真正的区别。 (除了您选择创建的框架之外,以防与PyCharm配置的框架不同。)

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

答案 1 :(得分:2)

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

PyCharm集成了Python解释器,为您提供了许多额外的功能。您告诉PyCharm您要在项目中使用哪个解释器,它将找出可用的软件包,版本,并自动正确设置一切以从PyCharm等运行代码。您可以告诉PyCharm使用您的系统的Python解释器或现有的虚拟环境,甚至使用它来创建新的环境。除了在项目设置中选择正确的解释器/环境之外,您无需执行任何其他特殊操作。

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

我更喜欢将venv放在项目文件夹之外,并将所有venv存储在~/.virtualenvs/中。它可以整理项目文件夹,并防止不小心将这些文件检入版本控制系统。

答案 2 :(得分:1)

  

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

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

  

这是错误的还是PyCharm处理的事情?

没有任何问题。只要您在项目的根目录中有一个a(或venv)目录,并且该目录对任何用户都是可执行的,Pycharm就会使用该目录,并为您激活该虚拟环境(不告诉您) )。如果Pycharm无法这样做(因为发现venv或激活/执行它很麻烦!),它将向您显示消息以解决其问题,并且除非您解决它们,否则它无法运行您的项目。

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

也请参见python virtual environmentsconfiguring pycharm virtualenv