python创建虚拟环境,python3虚拟环境
Yyds干货库存
虚拟环境。如果你曾经在Python中做过任何有意义的工作,那么你几乎肯定听说过这些。很有可能,你甚至被告知它们是不容置疑的。麻烦的是你不知道它们是什么,更不知道怎么做。
在我使用虚拟环境的最初几十次尝试中,我设法发现了一些可怕的错误,并对它们进行了总结。自从我知道了虚拟环境是如何工作的,我就没有遇到过任何问题。
我为什么要在乎?虚拟环境(有时称为virtualenv)是一个沙箱,您可以在其中仅安装所需的Python包。
“对,包是什么?”
嗯,Python以“扩展包”闻名。用一个简单的语句就可以“正常工作”.
但是,如果您想要的不仅仅是内置的软件包呢?例如,您可能想要创建一个时尚的用户界面,并决定使用PySide2。PySide2和其他数以千计的第三方库一样,还没有内置到Python中。——你必须安装它们。
幸运的是,安装大多数第三方库很容易!库的作者将整个库捆绑到一个包中,可以使用一个方便的Python小工具pip。(这个我们以后再说。)
但这是棘手的部分。有些包需要先安装其他包。有些套餐不喜欢其他一些套餐。同时,根据您的具体需求,您实际上可以安装特定版本的软件包。
我提到过您系统上的一些应用程序和操作系统组件依赖于那些Python包吗?
如果你不小心,你会陷入这种困境。
这就是我们拥有虚拟环境的原因!我们可以为每个项目创建一个不同的小沙箱,只安装我们想要的包,让一切井然有序。奖励一下,我们从来没有真正改变过我们系统上安装的Python包,所以我们避免破坏与我们项目无关的重要东西。
为我们获取安装pip和(venv,如果您的系统需要的话)的工具。举个例子,我们还会安装Python 3。如果已经装了,重装一下也无妨;否则,可以跳过这一部分。
在Linux上,您的发行版的包存储库中几乎肯定有您需要的东西。
Debian/Ubuntu: sudo apt安装python 3-venv python 3-pip Fedora:sudo dnf python 3-pip Centos:yum安装python3 python3-pip
在Mac上,您可以使用Macports或Homebrew安装它。
这是Python 3.7的Macports。如果你想要3.6,请将以下所有实例从37改为36。
sudo端口安装python37 py37-pip
sudo端口选择-设置python python37
sudo端口选择-设置pip py37-pip
这是自制的。
brew安装python
在Windows上,只需要下载安装Python即可。这应该也会自动安装pip和venv。
但是,如果您尝试在命令行上运行pip,您应该将get-pip.py下载到您的桌面,在您的命令行上导航到该目录,然后通过Python获得-pip.py。
哇!现在,让我们开始有趣的部分…创建一个虚拟环境!
创建一个虚拟环境。同样,虚拟环境就像一个沙箱,只包含您选择的包,忽略(默认情况下)系统中其他地方安装的所有Python包。每个虚拟环境都位于一个专用目录中。按照惯例,我们将这个文件夹命名为venv。
对于每个项目,我通常喜欢在项目文件夹中创建一个专用的虚拟环境。(如果您使用的是Git或其他VCS,我们稍后将介绍一个额外的设置步骤。)
为了创建虚拟环境,我们首先将命令行中的工作目录更改为项目文件夹。(记住,这是cd命令。)然后,我们一步创建虚拟环境及其目录。
在UNIX上.
python3 -m venv venv
命令的最后一部分Venv是您为虚拟环境创建的目录的名称。从技术上来说,你可以随便怎么称呼它,但正如我之前提到的,venv这是习惯。
注意,我们在这里明确指定了我们想要使用python3,尽管我们可以使用我们想要venv用于调用的特定python可执行文件(例如python3.6 -m venv venv)
如果您查看您的工作目录,您会注意到已经创建了目录venv/
激活虚拟环境很棒,那我们怎么用这个东西呢?
其实很简单。
在类UNIX系统(Mac、Linux等)上。),就跑.
源venv/bin/激活
在Windows上,运行.
venv\Scripts\activate.bat
就像魔法一样,你现在正在使用你的虚拟环境!在UNIX系统上,您可能会(venv)在命令行提示符的开头看到它,表明您正在使用venv这个名称。
当然,如果您用另一个名称命名虚拟环境,比如bob,那么您需要相应地更改激活命令(source bob/bin/activate)。
在拥有多个Python版本的系统上,虚拟环境的一个优点是您不再需要在命令中指定路径。激活虚拟环境后,Python whatever _ your _ command _ is . py会使用你在venv中创建的东西。每次都是。
介绍PIP我们大多数人都对Python的包系统寄予厚望。看我在那里做了什么。没有吗?叹气。)
Pip非常好用,比过去不好用的时候轻松多了。事实上,它曾经是如此庞大,以至于有些人觉得他们需要创建一个叫做easy_install的东西,但pip现在非常容易使用。
要安装一个包——比方说pyside2,只需运行.
pip安装PySide2
如果你想安装某个东西的特定版本,也很容易。
pip安装PySide2==5.11.1
奖励,甚至可以用=(“至少是这个版本或者更高版本”)这样的运算符。这些被称为需求描述符。所以这个.
pip安装PySide2=5.11.1
将安装PySide2的最新版本,至少为5.11.1或更高版本。如果您想确保某人能够实际访问软件包的最低版本(他们可能没有),这真的很有帮助。
requirements . txt requirements . txt通过为你的项目写文件,你实际上可以为自己和他人节省更多的时间。在每一行中,列出pip包的名称,就像在install命令中键入它一样。
例如,如果您有这样一个requirements.txt文件.
PySide2=5.11.1
appdirs
.您可以一次安装所有这些软件包。
pip安装-r要求. txt
很简单吧?
升级软件包pip安装您可以使用命令和- upgrade标志来更新已安装的软件包。例如,要安装PySide2的最新版本,只需运行.
pip安装-升级PySide2
你也可以使用.一次升级所有必要的软件包。
pip安装-升级-r要求. txt
删除包和东西也一样简单。
pip卸载PySide2
找包太好了,我们可以安装、升级和删除东西。但是我们如何知道pip必须提供哪些包呢?
有两种方法。第一种是使用pip本身来运行搜索。假设你想要一个用于网页抓取的软件包。
pip搜索网页抓取
这将为您提供大量的结果供您筛选,但是如果您忘记了包的名称,这将会很有帮助。
如果你想要更容易浏览和信息丰富的东西,PyPI.org是官方的Python包索引。
最后注意事项安装了虚拟环境所需的软件包后,您就可以开始了!下次启动虚拟环境时,这些包仍然会在那里,就像您离开时一样,等待着您。
皮普的警告.不管是谁告诉你,永远,永远,永远不要再在UNIX/LINUX系统上使用sudo pip。它会给你的系统安装造成很多不好的事情,以至于你的系统包管理器无法修复。在你的系统生命周期中,你会后悔这个决定。
所有sudo pip看似能解决的问题,虚拟环境都能解决。
记住不要做傻事
退出虚拟环境是很棒的,那么如何退出虚拟环境,回到现实……呃,咳咳,系统。
UNIX用户,你准备好了吗?
复员
我知道!很简单吧?
当然,Windows上的情况稍微复杂一些.
venv\Scripts\deactivate.bat
嗯,还是很简单的。(请记住,就像激活一样,如果您将虚拟环境命名为其他名称,您必须相应地更改该行。)
最后一个小细节。您可能已经注意到,大多数Python文件都类似于.
#!/usr/bin/python
首先,这叫“she-bang”(hash-bang或#的缩写!),这允许脚本在没有python附加到终端命令开头的情况下运行。
其次,上面这句话是非常非常错误的。它迫使计算机使用Python的特定系统范围副本,这或多或少会将整个虚拟环境抛出窗外。
相反,您应该始终使用下面的she-bang for Python3脚本:
#!/usr/bin/env python3
如果您碰巧有一个同时在Python2和Python3上运行的脚本,请使用:
#!/usr/bin/env python
虚拟环境和Git还记得之前的警告吗,关于venv,你用VCS像用Git吗?
在虚拟环境的目录中是您安装的实际软件包pip。这些会让你的库包含很多不必要的文件,你也不一定要把虚拟环境文件夹从一台电脑复制到另一台电脑,还指望它无论如何都能正常工作。
因此,我们不想在VCS追踪这些文件。在Git中,用。存储库根目录中的gitignore。或者编辑文件并在其中的某个地方添加这一行。
venv/
当然,如果您为虚拟环境使用不同的名称,您将更改该行以与之匹配。
按照惯例,每个克隆您的存储库的开发人员将构建他们自己的虚拟环境,可能使用您创建的requirements.txt文件。
如果您使用不同的VCS,如Subversion或Mercurial,请查看文档以了解如何忽略venv。
但是.许多Python开发人员可能会对您将虚拟环境完全放在存储库文件夹中深表不满。我上面的方法的主要缺点是,如果你给虚拟环境起了别的名字(venv或你放进去的任何东西。gitignore,会提交,不好。
最好的习惯实际上是从存储库目录中完全排除您的虚拟环境。但是,如果我们说实话,我们大多数人实际上并没有。感觉用“错误”的方式做更方便。
这时我们把venv加到。gitignore。您或其他人可能会将虚拟环境粘贴到您的存储库目录中,因此这只会有助于防止一些意外的提交。
Python 3.3之前的一些附加技巧,这个venv命令只有在使用Python 3.3或更高版本时才有效。在那之前,你需要pip的virtualenv。如果需要使用,请参考的virtualenv文档。
如果你在一个同时使用Python 2和Python 3的系统上,请确保使用python3 -m venv或者任何合适的。这一招不适用于3.6之前的任何Python版本。
无需激活即可使用虚拟环境。您还可以使用作为虚拟环境一部分的二进制文件,而无需实际激活它。例如,可以执行venv/bin/Python来运行virtualenv自己的Python实例,或者执行venv/bin/pip来运行它的pip。它实际上就像你激活了虚拟环境一样!
例如,我可以这样做(假设我的虚拟环境是venv).
venv/bin/pip安装pylint
venv/bin/python
导入pylint
.它是如何工作的!但是,import pylint仍然不能在系统范围内的Python shell上工作.当然,除非你把它安装在系统上。
我听到了很多关于使用pipenv的建议,包括在评论部分。本文就不介绍了,但是它的工作流程看起来很整洁,声乐爱好者也很多。您可以在这里找到更多信息:PyPI上的pipenv
总之,我希望本指南将彻底揭开虚拟环境的神秘面纱,pip将为您服务。
原创作品来自程,
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。