Python虚拟环境

如果您计划定期在astropy上工作,您应该在python虚拟环境中进行开发。从概念上讲,虚拟环境是您通常使用的python环境的副本,该虚拟环境中包含的正常环境中包含的包的数量尽可能多(或少)。它是从您正常的python环境中进行沙盒化的,在这个意义上,安装在虚拟环境中的包不会以任何方式影响您的正常环境。

备注

“普通python环境”是指您登录时使用的任何python。

使用虚拟环境有两种选择;方法的选择取决于您使用的python发行版:

在这两种情况下,您将经历相同的基本步骤;完成每个步骤的命令都是针对这两种情况给出的 condavirtualenvwrapper

备注

为虚拟环境设置

列出虚拟环境

在使用虚拟环境之前,您不需要列出已创建的虚拟环境…但迟早您会忘记您定义了哪些环境,这是一种很容易找到答案的方法。

  • virtualenvwrapper: workon
    • 如果没有显示,则表示没有虚拟环境

    • 如果显示 workon: command not found 那你还没做 为虚拟环境设置 ;这样做。

    • 有关已安装环境的详细信息,请使用 lsvirtualenv .

  • conda: conda info -e
    • 你总是至少有一个环境,叫做 root

    • 您的活动环境由 *

创建新的虚拟环境

这需要为您想要的每个虚拟环境执行一次。在创建虚拟环境时,您需要做出一个重要的选择:您希望在您的虚拟环境中安装在您的普通python环境中的哪个包(如果有的话)?

将它们包含在虚拟环境中并不需要太多额外的空间——它们被链接到虚拟环境中,而不是被复制。在虚拟环境中,您可以安装新版本的包,如Numpy或Astropy,这些版本会覆盖在普通python环境中安装的版本。

开始的最简单方法是在虚拟环境中包含在您的普通python环境中安装的包;下面的说明可以做到这一点。

接下来的一切, ENV 表示为虚拟环境指定的名称。

您选择的名称中不能有空格。

  • virtualenvwrapper:
    • 创造一个称为 ENV 在正常python环境中的所有包:

      mkvirtualenv --system-site-packages ENV
      
    • 省略选项 --system-site-packages 创建一个没有在常规python环境中安装python包的环境。

    • 使用创建的环境 virtualenvwrapper 始终包括 pipsetuptools 以便您可以在虚拟环境中安装软件包。

    • 更多细节和示例见 virtualenvwrapper command documentation .

  • conda:
    • 创造一个称为 ENV 在你的主要水蟒环境中的所有包:

      conda create -n ENV anaconda
      
    • 更多详细信息和示例都不是从普通python环境中的包开始的,请参见 documentation for the conda command 以及 guide on how to manage environments .

    • 下一步激活环境 ENV 使用:

      conda激活环境

    • 您的命令行提示符将包含 ENV 默认情况下在括号中。

    • 如果astropy安装在 ENV 环境中,您可能需要卸载它才能正确安装开发版本。可以使用以下命令执行此操作:

      conda uninstall astropy
      

激活虚拟环境

要使用新的虚拟环境,您可能需要激活它; virtualenvwrapper 将尝试在创建新环境时自动激活它。激活可以做两件事(您可以手动完成这两件事中的任何一件,尽管这会很不方便):

  • bin 您的前面的虚拟环境的目录 $PATH .

  • 将虚拟环境的名称添加到命令提示符中。如果您成功地切换到一个名为 ENV 您的提示应该如下所示: (ENV)[~] $

除了激活新环境之外,下面的命令还允许您在虚拟环境之间切换。

  • virtualenvwrapper: 激活环境 ENV 用:

    workon ENV
    
  • ` conda` :激活环境 ENV 用:

    conda activate ENV
    

停用虚拟环境

在某些情况下,您可能希望回到正常的python环境。使用以下方法:

  • virtualenvwrapper: deactivate
    • 请注意 virtualenvwrapper 4.1.1 的输出 mkvirtualenv 说你应该用 source deactivate ;这似乎不起作用。

  • conda: conda deactivate

删除虚拟环境

两者兼而有之 virtualenvwrapperconda 您只需删除 ENV 都提供了命令,使之更容易些。