python的环境管理

虚拟环境

虚拟环境是一个 Python 环境,安装到其中的 Python 解释器、库和脚本与其他虚拟环境中的内容是隔离的,且(默认)与“系统级” Python(操作系统的一部分)中安装的库是隔离的。

虚拟环境是一个目录树,其中包含 Python 可执行文件和其他文件,其他文件指示了这是一个是虚拟环境。

常用安装工具如 setuptoolspip 可以在虚拟环境中按预期工作。换句话说,当虚拟环境被激活,它们就会将 Python 软件包安装到虚拟环境中,无需明确指示。

当虚拟环境被激活(即虚拟环境的 Python 解释器正在运行),属性 sys.prefixsys.exec_prefix 指向的是虚拟环境的基础目录,而 sys.base_prefixsys.base_exec_prefix 指向非虚拟环境的 Python 安装,即曾用于创建虚拟环境的那个 Python 安装。如果虚拟环境没有被激活,则 sys.prefixsys.base_prefix 相同,且 sys.exec_prefixsys.base_exec_prefix 相同(它们均指向非虚拟环境的 Python 安装)。

当虚拟环境被激活,所有 distutils 配置文件中更改安装路径的选项都会被忽略,以防止无意中将项目安装在虚拟环境之外。

在命令行 shell 中工作时,用户可以运行虚拟环境可执行文件目录中的 activate 脚本来激活虚拟环境(调用该文件的确切文件名和命令取决于 shell),这会将虚拟环境的可执行文件目录添加到当前 shell 的 PATH 环境变量。在其他情况下,无需激活虚拟环境。安装到虚拟环境中的脚本有 “shebang” 行,指向虚拟环境的 Python 解释器。这意味着无论 PATH 的值如何,脚本都将与该解释器一起运行。在 Windows 上,如果已安装 Python Launcher for Windows,则支持处理 “shebang” 行(此功能在 Python 3.3 中添加,详情请参阅 PEP 397)。这样,在 Windows 资源管理器中双击已安装的脚本,应该会使用正确的解释器运行该脚本,而在 PATH 中无需指向其虚拟环境。

虚拟环境管理器

常用的虚拟环境管理器有virtualenv /venv、conda

virtualenv

virtualenv的安装和使用:

安装

pip3 install virtualenv

创建虚拟环境

virtualenv envname

这个命令创建虚拟环境,会在当前所在目录进行创建
进入虚拟环境后并进行激活

cd scrapy3env\Scripts
activate.bat

退出虚拟环境

deactivate.bat
虚拟环境的配置

virtualenvwrapper-win可以更方便的配置virtualenv
安装 virtualenvwrapper-win

pip3 install virtualenvwrapper-win

使用workon查看是否安装成功
workon是简化操作的命令之一

workon

给虚拟环境设置一个专门存放的目录
通过设置WORKON_HOME路径,就给我们的python虚拟环境指定了一个存放位置
可以把之前创建的虚拟环境目录拷贝的WORKON_HOME

配置之后的常用命令

列出虚拟环境列表:workon
新建虚拟环境:mkvirtualenv [虚拟环境名称]   ->应该就是make的简写方便理解  
启动/切换虚拟环境:workon [虚拟环境名称]
离开虚拟环境:deactivate

以上用法已过时,不建议使用。见下

venv

venv 模块支持使用自己的站点目录创建轻量级“虚拟环境”,可选择与系统站点目录隔离。每个虚拟环境都有自己的 Python 二进制文件(与用于创建此环境的二进制文件的版本相匹配),并且可以在其站点目录中拥有自己独立的已安装 Python 软件包集。

创建虚拟环境

通过执行 venv 指令来创建一个 虚拟环境:

python3 -m venv /path/to/new/virtual/environment

运行此命令将创建目标目录(父目录若不存在也将创建),并放置一个 pyvenv.cfg 文件在其中,文件中有一个 home 键,它的值指向运行此命令的 Python 安装(目标目录的常用名称是 .venv)。它还会创建一个 bin 子目录(在 Windows 上是 Scripts),其中包含 Python 二进制文件的副本或符号链接(视创建环境时使用的平台或参数而定)。它还会创建一个(初始为空的) lib/pythonX.Y/site-packages 子目录(在 Windows 上是 Lib\site-packages)。如果指定了一个现有的目录,这个目录就将被重新使用。

3.6 版后已移除: pyvenv 是 Python 3.3 和 3.4 中创建虚拟环境的推荐工具,不过 在 Python 3.6 中已弃用

在 3.5 版更改: 现在推荐使用 venv 来创建虚拟环境。

在 Windows 上,调用 venv 命令如下:

c:\>c:\Python35\python -m venv c:\path\to\myenv

或者,如果已经为 Python 安装 配置好 PATHPATHEXT 变量:

c:\>python -m venv c:\path\to\myenv

本命令如果以 -h 参数运行,将显示可用的选项:

usage: venv [-h] [--system-site-packages] [--symlinks | --copies] [--clear]
            [--upgrade] [--without-pip] [--prompt PROMPT] [--upgrade-deps]
            ENV_DIR [ENV_DIR ...]

Creates virtual Python environments in one or more target directories.

positional arguments:
  ENV_DIR               A directory to create the environment in.

optional arguments:
  -h, --help            show this help message and exit
  --system-site-packages
                        Give the virtual environment access to the system
                        site-packages dir.
  --symlinks            Try to use symlinks rather than copies, when symlinks
                        are not the default for the platform.
  --copies              Try to use copies rather than symlinks, even when
                        symlinks are the default for the platform.
  --clear               Delete the contents of the environment directory if it
                        already exists, before environment creation.
  --upgrade             Upgrade the environment directory to use this version
                        of Python, assuming Python has been upgraded in-place.
  --without-pip         Skips installing or upgrading pip in the virtual
                        environment (pip is bootstrapped by default)
  --prompt PROMPT       Provides an alternative prompt prefix for this
                        environment.
  --upgrade-deps        Upgrade core dependencies: pip setuptools to the
                        latest version in PyPI

Once an environment has been created, you may wish to activate it, e.g. by
sourcing an activate script in its bin directory.

除非采用 --without-pip 选项,否则将会调用 ensurepippip 引导到虚拟环境中。

可以向 venv 传入多个路径,此时将根据给定的选项,在所给的每个路径上创建相同的虚拟环境。

创建虚拟环境后,可以使用虚拟环境的二进制目录中的脚本来“激活”该环境。不同平台调用的脚本是不同的(须将 替换为包含虚拟环境的目录路径):

平台Shell用于激活虚拟环境的命令
POSIXbash/zsh$ source /bin/activate
fish$ source /bin/activate.fish
csh/tcsh$ source /bin/activate.csh
PowerShell Core$ /bin/Activate.ps1
Windowscmd.exeC:> \Scripts\activate.bat
PowerShellPS C:> \Scripts\Activate.ps1

当一个虚拟环境被激活时,VIRTUAL_ENV 环境变量会被设为该虚拟环境的路径。 这可被用来检测程序是否运行在虚拟环境中。

激活环境不是 必须 的,激活只是将虚拟环境的二进制目录添加到搜索路径中,这样 “python” 命令将调用虚拟环境的 Python 解释器,可以运行其中已安装的脚本,而不必输入其完整路径。但是,安装在虚拟环境中的所有脚本都应在不激活的情况下可运行,并自动与虚拟环境的 Python 一起运行。

在 shell 中输入 “deactivate” 可以退出虚拟环境。具体机制取决于不同平台,并且是内部实现(通常使用脚本或 shell 函数)。

安装的virtualenv

如果您使用的是Python 3.3或更高版本,则该venv模块是创建和管理虚拟环境的首选方式。venv包含在Python标准库中,不需要其他安装。如果您使用的是venv,则可以跳过本节。

virtualenv用于管理不同项目的Python软件包。使用virtualenv可以避免在全球安装Python软件包,这可能会破坏系统工具或其他项目。您可以使用pip安装virtualenv。

在macOS和Linux上:

python3 -m pip install --user virtualenv

在Windows上:

py -m pip install --user virtualenv
创建虚拟环境

venv(对于Python 3)和virtualenv(对于Python 2)使您可以管理不同项目的单独软件包安装。从本质上讲,它们使您可以创建“虚拟”隔离Python安装并将软件包安装到该虚拟安装中。切换项目时,您可以简单地创建一个新的虚拟环境,而不必担心破坏其他环境中安装的软件包。在开发Python应用程序时,始终建议使用虚拟环境。

要创建虚拟环境,请转到项目目录并运行venv。如果您使用的是Python 2,请 在以下命令中替换venvvirtualenv

在macOS和Linux上:

python3 -m venv env

在Windows上:

py -m venv env

第二个参数是创建虚拟环境的位置。通常,您可以在项目中创建它并调用它env

venv将在该env文件夹中创建虚拟Python安装。

笔记

您应该使用.gitignore或类似方法将虚拟环境目录从版本控制系统中排除。

激活虚拟环境

您需要先激活它,然后才能开始在虚拟环境中安装或使用软件包。激活虚拟环境将会把虚拟环境的具体 pythonpip可执行文件到你的shell PATH

在macOS和Linux上:

source env/bin/activate

在Windows上:

.\env\Scripts\activate

您可以通过检查Python解释器的位置来确认您处于虚拟环境中,该解释器应指向该env目录。

在macOS和Linux上:

which python
.../env/bin/python

在Windows上:

where python
.../env/bin/python.exe

只要激活了虚拟环境,pip就会将软件包安装到该特定环境中,您将能够在Python应用程序中导入和使用软件包。

离开虚拟环境

如果要切换项目或以其他方式离开虚拟环境,只需运行:

deactivate

如果要重新进入虚拟环境,请按照上述有关激活虚拟环境的相同说明进行操作。无需重新创建虚拟环境。

conda

conda即时包管理器也是虚拟环境管理器

conda 的安装和使用
创建虚拟环境
conda create --name $ENVIRONMENT_NAME

激活环境
conda activate $ENVIRONMENT_NAME

停止环境
conda deactivate $ENVIRONMENT_NAME

删除环境
conda env remove --name $ENVIRONMENT_NAME

导出到环境文件
conda env export > $FILE_NAME

从一个文件中创建环境
conda env create -f $FILE_NAME

列出所有环境
conda info --envs / conda info -e / conda env list 


下面的代码是一个简单的示意:创建一个名为 py27 的环境,在其中安装 IPython,并执行一行 Python 2.7.x 代码。
root@py4fi:~# conda create --name py352 python=3.5.2

有时候,你需要与其他人共享环境信息,或者在多台机器上使用环境信息。为此,可 以用 conda env export 将已安装程序包列表导出到一个文件中。这只默认适用于 使用相同操作系统的机器,因为结果 YAML 文件中指定构建版本,但可以将其删掉, 只指定软件包版本。

(py27) root@py4fi:~# conda env export --no-builds > py27env.yml 
(py27) root@py4fi:~# cat py27env.yml

从技术上说,虚拟环境不过是一个特定的(子)文件夹结构,创建它们往往是为了进行一 些快速测试。在这种情况下,停止后的环境很容易用 conda env remove 删除。

 (py27) root@py4fi:/# conda deactivate
 root@py4fi:~# conda env remove -y --name py27
conda软件源管理

法一:

查看文件位置:conda config --show-sources

.condarc文件是切换源的文件

channels:
  - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
  - https://mirrors.ustc.edu.cn/anaconda/pkgs/main/
  - defaults
show_channel_urls: true
ssl_verify: true

法二:

添加清华源

conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge 
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/msys2/
# 设置搜索时显示通道地址
conda config --set show_channel_urls yes

注意如果需要pytorch, 还需要添加pytorch的镜像

conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/pytorch/
为jupyter notebook添加多版本python内核

一、用conda创建python3.5.2版本虚拟环境

conda create --name py352

二、激活进入环境

conda activate py352

三、下载ipykernel,通过ipykernel为jupyter添加python3.5.2环境

pip install ipykernel
python -m ipykernel install --name py352

在命令行查看Jupyter Notebook的kernel列表

ipython kernelspec list

报错:

具体创建了一个新的conda环境,python版本是3.6,当我想把此版本更新到jupyter notebook的内核时(此前已经安装了ipykernel),发现报错:

执行python -m ipykernel --version也会报同样的错误。
ImportError: cannot import name ‘AsyncGenerator’

解决办法

将原来的prompt-toolkit-3.0.2版本降为 2.0.10版本:

pip install prompt-toolkit==2.0.10

问题
Anaconda自动进入虚拟环境base ,
我们发现安装完anaconda后 打开terminal会自动进入到base虚拟环境 ,
解决办法
执行下面的命令

conda config --set auto_activate_base false

PS:常见命令如下

安装ipykernel:
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple ipykernel


查看kernel列表:
jupyter kernelspec list


删除某个kernel:
jupyter kernelspec remove ts_py36


在当前用户环境下安装kernel(如果不加--user,会应用全局,这个选项在多人合作中需要用到):
python -m ipykernel install --name ts_py36 --display-name "py36_tf18" --user


卸载pip
python3 -m pip uninstall pip setuptools


安装新的pip
curl https://bootstrap.pypa.io/get-pip.py | python3

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值