python如何创建虚拟环境(python创建虚拟环境 conda)

http://www.itjxue.com  2023-03-28 12:31  来源:未知  点击次数: 

虚拟环境详解

? ?? 假想您有一个应用程序需要版本1的numpy库,而另一个应用程序需要版本2。如何使用这两个应用程序呢?2.如果您将所有内容安装到python3.6的site-packages,很容易出现这样的情况:您无意中升级了不应该升级的。3.如果要使写的项目正常运行,其所依赖的第三方库的版本更改都可能让这个项目无法正常运行。另外,如果您无法将第三方库安装到全局site-packages目录下,该怎么办呢?例如,在共享主机上。

? ? 我们必须考虑到这些场景,所以虚拟环境诞生了!它们有自己的安装目录,并且不与其他虚拟环境共享库,每个虚拟环境都是独立的!

? ?? 目前,有两种用于创建python虚拟环境的两种工具:

? ? ? ? ?? 1.venv在python3.3及更高版本中默认可用,并将pip和setuptools安装到创建的虚拟环境中(这种行为只在python3.4及更高版本才会出现)。由于我最近没有时间,我准备在之后的两篇文章中介绍pip和setuptools。

? ? ? ? ?? 2.而virtualenv需要单独安装。其在python2.7+和python3.3+中默认可用,pip,setuptools和wheel始终安装到创建的虚拟环境中(此行为忽略python版本!)

? ?? venv模块支持创建轻量级虚拟环境,该环境具有自己的site-packages,可以选择与系统site-packages隔离。每个虚拟环境都有自己的python二进制文件(与用于创建此环境的二进制文件的版本相匹配),并且可以在其site-packages中安装自己的独立python包。

? ?? 通过venv命令创建虚拟环境:python3 -m venv /path/virtual/env。运行此命令将创建目标目录(行为为创建任何尚不存在的父目录)并创建一个pyvenv.cfg文件,文件中的home指向运行该命令的python的安装目录。它还创建一个bin(在Windows上是Scripts)子目录,其中包含python二进制文件、二进制文件的符号链接、副本(平台和参数不同,创建的东西也不同)。它还创建一个最初为空的lib/pythonX.Y/site-packages子目录(在Windows上,这是Lib/site-packages)。如果指定了现有目录,则将重新使用现有目录。

? ?? 不要双击虚拟环境下的python.exe,这样它会忽略虚拟环境。创建的pyenv.cfg文件中的include-system-site-packages默认为false,如果使用了include-system-site-packages选项,则设置为true。除非给出了--without-pip选项,否则将调用ensurepip将pip引导到虚拟环境中。可以为venv提供多条路劲,在这种情况下,将根据给定的选项在每个提供路劲上创建相同的虚拟环境。创建虚拟环境后,可以使用虚拟环境二进制目录中的脚本激活虚拟环境。脚本调用是特定于平台的。在Windows下,虚拟环境目录\Scripts\activate.bat激活虚拟环境。当虚拟环境处于活动状态时,VIRTUAL_ENV环境变量将设置为虚拟环境的路劲,这可用于检查是否运行在虚拟环境中。指的注意的是,你不需要特别激活虚拟环境,激活只是将虚拟环境的二进制目录前置到运行shell的PATH环境变量,以便python调用虚拟环境的python解释器,你可以运行已安装的脚本,而无需使用它们的完整路劲。但是,安装在虚拟环境中的所有脚本都应该可以在不激活它的情况下运行,并自动使用虚拟环境下的python运行。你可以通过在shell中输入"deactive"命令来停用虚拟环境。?

? ? ? 当虚拟环境处于活动状态(即,虚拟环境的python解释器正在运行时),属性sys.prefix和sys.exec_prefix指向虚拟环境的基本目录。而sys.base_prefix和sys.base_exec_prefix指向用于创建虚拟环境的python安装目录。如果虚拟环境未处于活动状态,则sys.prefix和sys.base_prefix,sys.exec_prefix和sys.base_exec_prefix都指向非虚拟环境的python安装目录。安装到虚拟环境中的脚本有一行"shebang",它指向虚拟环境的python解释器。这意味着脚本将与该解释器一起运行,而与PATH的值无关。 ??

? ? ?? 可以使用下列API根据需要定制虚拟环境:

? ? ? ? ? ? venv.EnvBuilder( system_site_packages=False , clear=False , symlinks=False , upgrade=False , with_pip=False , prompt=None , upgrade_deps=False )

? ? ? ? ? ?? system_site_packages:指示系统site_packages是否可供虚拟环境使用。?

? ? ? ? ? ?? clear:如果为True,将在创建虚拟环境之前删除任何现有目标目录的内容

? ? ? ? ? ?? symlinks:指示是否尝试对python二进制文件进行符号链接而不是复制

? ? ? ? ? ? ? upgrade:如果为True,则将更新升级python现有环境,这个选项用于在python已升级到位时使用

? ? ? ? ? ? ? with_pip:如果为True,则确保在虚拟环境中安装pip

? ? ? ? ? ? ? prompt:激活虚拟环境后要使用的字符串(默认为None,这意味着将使用环境的目录名)。如果是".",当前目录用作提示

? ? ? ? ? ? ? upgrade_deps:将基本venv模块更新到pypi上的最新版本 ?

返回的EnvBuilder对象,有以下方法:

? ? ? ? ? craete(envdir),通过指定要包含虚拟环境的目标目录,创建虚拟环境。

ensure_directories( env_dir ),创建环境目录和所有必要的目录,并返回一个上下文对象,这个上下文对象供其他方法使用。

create_configuration(context),在虚拟环境下创建pyenv.cfg配置文件

setup_python( context ),在虚拟环境下创建python可执行文件的拷贝或符号链接,在POSIX系统上,如果python3被使用,创建指向该可执行文件的python和python3符号链接(除非它们已经存在)

setup_scripts( context ),将适合平台的激活脚本安装到虚拟环境中。

upgrade_dependencies( context ),升级虚拟环境中的核心venv依赖项包(当前为pip和setuptools)。

post_setup( context ),可在第三方实现中重写。以在虚拟环境中预安装软件包步骤之后 ,进行自定义的操作

我在想还是先略过他们吧,定制一个venv实在是没有必要,因为虚拟环境的创建还有一个更强大的工具。

下面我们来介绍venv的几种命令参数,相信看了前面,现在看到便不会看不懂了!

??--system-site-packages,允许虚拟环境访问系统site-packages目录

? --symlinks,在符号链接不是平台的默认操作时,仍然尝试使用符号链接,而不是拷贝

? --copies,即使符号链接是平台的默认操作,也尝试使用拷贝

? --clear,在创建虚拟环境之前删除任何现有目标目录的内容

? --upgrade,将虚拟环境下的python可执行文件升级到运行脚本的python版本

? --without-pip,不再虚拟环境下安装或升级pip

? --prompt PROMPT,将PROMRT作为此虚拟环境下的提示前缀

? --upgrade-deps,升级核心依赖项(pip和setuptools)

? ?? virtualenv是一种需要python解释器才能运行的命令行工具。如果你已经有了python3.5+解释器,那么最好使用pipx将virtualenv安装到一个隔离的环境中(好处:以后您升级virtualenv的时候不会影响到系统的其他部分)?

? ?? virtualenv有一个基本命令:virtualenv env,virtualenv将创建一个与其版本相同的python虚拟环境,并将虚拟环境安装到子目录env中。?

? ?? virtualenv主要是一个命令行应用程序。它的主要作用是修改命令行中的环境变量以创建一个独立的python环境,因此你需要一个命令行来运行它。所有选项都有合理的默认值,并且有一个必须的参数(创建的虚拟环境的路劲)。? 下面列出了可以传递给virtualenv的选项及其默认值和简短说明。

? ? --version,显示virtualenv软件包的版本及其位置,然后退出。

? ? --with-traceback,默认值为False,True的行为:失败会显示virtualenv内部的堆栈跟踪

? ? --read-only-appdata,默认值为False,True的行为:以只读模式使用appdata文件夹(virtualenv用作缓存的数据文件夹)(不允许写入操作,写入操作将失败并报错)

? ? --app-data,指定virtualenv用作缓存的数据文件夹

? ? --reset-app-data,默认值为False,True的行为:将appdata文件夹清空

? ? -p,--python:指定virtualenv要安装的python可执行文件。默认情况下使用安装环境的python解释器

? ? --try-first-with:在开始查找之前,请先尝试这些解释器

? ? --clear,默认值为False,True的行为:在启动之前删除目标目录

? ? --system-site-packages,默认为False,True的行为:允许虚拟环境访问系统site-packages目录

? ? --symlinks,默认为True,True的行为: 尝试使用symlinks而不是拷贝

? ? --copies,--always-copy,默认False,True的行为:尝试使用副本

?? 推荐还是使用默认的吧,除非出现错误,可以指定--with-traceback进行错误调试。

?? virtualenv还可以通过查找标准ini配置文件进行配置,ini配置文件具体位置取决于你使用的操作系统, 由platformdirs应用程序配置,可以查看。?

虚拟环境就介绍到这里了,虚拟环境的本质就是修改shell的PATH环境变量,如果你有这方面的想法,你也可以编写一个实现虚拟环境的工具,当然,完全没有这个必要,真的,没什么意思。

9、Python虚拟环境

(1)安装虚拟环境

1.安装virtualenv, 控制台使用命令:pip install virtualenv

2.创建一个以后存放虚拟环境的目录如d:\envs, 可在控制台使用命令d: 回车,mkdir envs

3.创建虚拟环境,控制台输入命令 :virtualenv 文件夹名

4.进入虚拟环境cd 虚拟环境的Scripts, 然后使用命令activate,虚拟环境的名称被小括号括起来,并且出现在最前面说明成功进入虚拟环境

5.进入虚拟环境以后可以安装第三方包(库),使用命令 pip install ..., 出现successfully则表示安装成功

6.如何验证安装的程序是否成功:

-》python 命令进入python shell环境检测

-》import 包(架)名

没有报错,导入包成功,则表明安装成功

7.退出虚拟环境 deactivate.bat, 最前面有小括号的虚拟环境就没有了

如果当时在python shell环境,则需要现在用quit()/exit()退出

(2)虚拟环境切换 Virtualenvwrapper

1.安装virtualenvwrapper,使用命令 pip install virtualenvwrapper-win

2.配置管理虚拟环境的位置,系统环境变量

变量名: WORKON_HOME

变量值:虚拟环境路径

3.虚拟环境自由切换:workon vname

注:3.7以上python目前不兼容。

(3)pychaml中导入虚拟环境

1.打开Pycharm,然后依次点击左上方的file-Settings

2.之后依次Project-Project Interpreter

3.点击右上方的设置按钮,然后点击Add

4.在弹出的Add Python Interpreter页面中,依次选择Virtualenv Environment(虚拟环境)-Existing environment

5.之后在弹出的界面中加载本地的虚拟环境,点击右侧的三个点号的按钮

6.根据目录,依次找到自己创建的虚拟环境路径,我的路径是I:-Virtual_environment_list-Scripts-python.exe,点击OK按钮

可以用于解决需要使用不同版本python的开发问题。

3.创建python(必须是本机已安装版本) :

4.进入虚拟环境:

5.在虚拟环境中安装模块:

6.退出pipenv的虚拟环境:

7.查看我所在的位置:

8.显示所在的位置:

9.查看一个目录依赖于哪些目录:

10.查看可用的程序:

11.删除虚拟环境中所有已安装模块,且不编辑Pipfile.lock,删除完用pipenv install能重新安装:

12.删除一个已安装模块,且从Pipfile.lock中删除:

13.删除虚拟环境:

如何为python项目创建虚拟环境

我们在开始一个python项目,而不是几行简单的代码时,我们倾向于开始使用第三方的dependencies.当项目越来越大时,我们需要考虑如何有效的管理这些第三方库。当安装第三方库时,我们肯定是想安装在虚拟环境中。帮助我们保持我们实际系统环境的干净,避免打乱整个系统python环境。

我们可以使用pip把第三方库安装到python项目中。一个项目中往往要安装多个,鉴于安装的第三方库的各种版本,可能会导致一些兼容和运行的问题。

当我们在python项目中使用pip install ,我们是安装到全局python下的,将会根据现有的python版本安装第三方包。

我们可以通过以下命令来查找python的安装目录:

如果我们使用pip3 install ,将会安装到python3安装目录的单独的目录下。我们可以用以下命令来覆盖pip3这个命令:

但是这仍然解决不了我们在全局python下安装第三方库的问题,将会出现下列的问题:

为了避免以上的问题,python开发者使用虚拟环境。这个虚拟环境把安装的这些第三方库在一个隔离的环境中(目录内)保存。

确保你的系统上已经安装python

然后看一下pip是否也能正常调用

我们需要一个工具来创建python的虚拟环境,venv。它是封装在python3.3+版本以上的python中的。

如果我们使用python2,我们需要手动安装一个工具。这是为数不多的一个我们需要全局安装的第三方库。

注意:我们将会在文章中讨论很多venv和python3,操作系统环境不同,可能会导致某些命令的些许不同,某些工具的工作原理也些许不同。

如果你的系统上没有安装pip:

我们首先要为项目创建一个文件夹,并进入这个文件夹:

然后我们再创建虚拟环境:

这将会创建一个名为virtualenv的目录,这个目录将会包含bin、lib、include文件夹,还有一个环境配置文件。

所有的文件都是为了确保,所有的代码都运行在当前的虚拟环境下。这会帮我们把工作环境和操作系统环境隔离开来,避免我们之前提到的问题。

为了使用这个虚拟环境,我们需要激活它。激活以后,还会更改我们的命令提示符标志。这个标志也是为了表明虚拟环境已经激活,python的代码都是在这个环境下执行。

在虚拟环境下,无法访问使用全局的第三方库,在虚拟环境内安装的库也无法在外部使用。

在虚拟环境中,只有pip和setuptools是默认安装的。

激活虚拟环境后,变量path也会相应地发生改变,以达到虚拟环境的目的。

当我们完成工作,想切换回操作系统的全局环境,我们需要使用deactivate退出虚拟环境。

我们配置了虚拟环境并激活以后,我们不想在分享项目时,连同使用pip install命令安装的第三方库也一起分享。我们想去除我们的虚拟环境文件夹,但仍然可以在其他的电脑或系统上重新运行我们的工作。

为实现这个目的,我们可以在项目根目录下创建一个requirement文件。假设我们在虚拟环境下安装flask,安装完成后我们使用pip freeze命令。它将会列出我们已经安装过的库名和版本号。

我们可以将这个列表写到requirement文件中,上传到git保存,或以任何形式跟他人分享。

这个命令也可以更新这个requirements.txt文件,所以在每次安装一个新的第三方库时,我们都习惯性的运行一下这个命令,来更新我们的安装列表。

然后,如果任何人想在他们的电脑上运行我们的项目,他们只需要做:

所有的一切都如在我们电脑上运行的一样。

安装pipenv

pipenv基本上是pip的一个替代工具。它引入了两个文件,pipfile用来替换requirements.txt,Pipfile lock(which enables deterministic builds,确定第三方库的子依赖库版本的更新的解决方案)

pipenv在机理上是运行pip和virtualenv,但使用一个命令来简化操作。

安装第三方库,如flask,或numpy

也可以从Version Control system比如git来安装第三方库

需要注意上面的-e参数可以使安装editable,目前对于pipenv来说是必须的。

如果你需要使用pytest来测试项目,但在上线后不需要这个库,你可以指定这个库仅仅作用于开发模式 --dev.

--dev将会把第三库放到pipfile的一个单独的地方【dev-packages】。

如果你现在完成了开发,本地运行正常,你想锁定你的开发环境,并转至线上。使用如下命令确保开发环境:

这个代码将会创建或更新你的环境,你无需手动更改编辑。我们也应该一直使用自动生成的文件。

lock以后,在production环境,你需要安装最新的成功的运行环境。

这个命令是告诉pipenv,安装时忽略pipfile,用pipfile.lock里的列表。pipenv将会创建一模一样的环境,包括子依赖库。

现在,另一个人想要对代码做些更改,这种情况下,他得到代码,包括pipfile,运行如下命令

这个命令将会安装开发所需的所有的第三方库,包括普通的install以及--dev安装的。

举例,现在你开发用到的一个第三库有了版本升级,因为你不需要一个特定的版本,所以你在install的时候没有指定版本号。当你运行pipenv install时,最新版本的第三方库会安装到你的开发环境内。

然后你对代码做了一些更改,结果如预期一样。然后你再重复上面的步骤lock你的环境。并更新至Production.

将会使用默认的editor打开第三方库的代码。

python命令行创建虚拟环境

命令行创建虚拟环境virtualenv

1、首先创建虚拟环境:virtualenv django1.11

2、cd到django1.11/Scripts,运行 activate 进入虚拟环境

pipenv

如果需要多个python版本开发环境时,可以使用pipenv来创建不同python版本环境

【Python入门】37.常用第三方模块之 创建虚拟环境virtualenv

摘要:virtualenv可创建独立的虚拟运行环境,解决了不同应用项目间多版本的不兼容问题。

常用第三方模块

virtualenv

安装virtualenv

创建虚拟环境

使用virtualenv

小结

virtualenv 用于创建Python的虚拟环境。当一个项目需要运行的版本与系统所带的版本不一致,就需要创建一个该项目的独立运行环境,确保项目正常运行。

比如现在要做一个Django项目,用到的Django是1.8版本,但系统的Django版本已经更新到1.11了,如果用系统的环境来运行项目就会有不兼容的情况出现,那么就需要创建虚拟环境来解决。

Linux系统和Windows系统使用virtualenv略有不同。

下面介绍的是在 Windows系统 下如何使用virtualenv。

在命令行模式下输入:

等待安装成功即可。

首先通过cd命令进入需要创建虚拟环境的文件目录,如在D盘的envs文件夹里面

然后通过 virtualenv 创建一个虚拟环境,我们将它命名为 new_env

然后会看到下面结果:

说明成功使用当前系统的Python版本创建了一个虚拟环境。

通过cd命令进入虚拟环境目录下的Scripts目录

然后输入 activate

会出现下面的结果:

地址前面的括号表示,当前环境是Python创建的虚拟环境 new_env 。

输入 python ,可查看当前环境的Python版本

输入 pip list ,可查看当前环境下包含的库的版本

在虚拟环境下,用pip安装的所有包都会装在 new_env 环境下,系统Python环境不受影响。这样,我们就可以安装运行项目所需要的工具版本了,

最后,使用 deactivate 命令退出虚拟环境

virtualenv可创建独立的虚拟运行环境,解决了不同应用项目间多版本的不兼容问题。

以上就是本节的全部内容,感谢你的阅读。

下一节内容:图形界面

有任何问题与想法,欢迎评论与吐槽。

和博主一起学习Python吧( ̄▽ ̄)~*

(责任编辑:IT教学网)

更多

推荐网站经济文章