首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >从PyCharm到命令行的虚拟环境

从PyCharm到命令行的虚拟环境
EN

Stack Overflow用户
提问于 2019-10-28 11:03:17
回答 3查看 2.7K关注 0票数 0

我对创建Python应用程序相当陌生。我在使用PyCharm的一些小教程和应用程序中无所事事,并且总是使用Virtualenv环境创建一个新项目,最后在我的项目文件夹下创建了一个"venv“文件夹。我在这方面没有任何问题,但我也没有做过任何大型项目。

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

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

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2019-10-28 11:07:38

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

手工创建的VirtualEnvs和由PyCharm创建的没有真正的区别。(除了您选择创建一个框架之外,如果这与配置PyCharm的情况不同的话)。

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

票数 3
EN

Stack Overflow用户

发布于 2019-10-28 11:17:43

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

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

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

我更喜欢将venv保存在项目文件夹之外,并将所有的venv存储在~/.virtualenvs/或类似的文件中。它会释放项目文件夹,防止意外地将这些文件签入版本控制系统。

票数 2
EN

Stack Overflow用户

发布于 2019-10-28 12:03:44

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

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

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

这没什么问题。只要您在项目根目录中有一个venv (或.venv)目录,并且它对于任何用户都是可执行的,Pycharm就会使用它,并且它会为您激活这个虚拟环境(无需告诉您)。如果Pycharm不能做到这一点,(因为在查找venv或激活/执行它方面有困难!)然后,它将向您显示修复其问题的消息,并且在您修复它们之前,它无法运行您的项目。

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

参见python虚拟环境配置py魅力虚拟主机

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58589776

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档