如何使用虚拟环境?

如何使用虚拟环境?

今天看到一个命令使用的例子virtualenv,是下面四个命令:

virtualenv /tmp/vetest
source /tmp/vetest/bin/activate
pip install ipython-notebook
deactivate

第一个命令创建目录,/tmp/vetest/其中有四个子目录:lib,,,,。includelocalbin

然后我们使用source。它有什么用?据我所知,它会将我带入虚拟环境。在那里我可以安装不同的东西(否则我无法这样做,因为我没有 root 权限)。

使用 deactivate 可以离开虚拟环境。这是我目前所理解的。

我仍然有几个问题不清楚。这个命令和 Python 有什么关系?这个命令是 Unix 系统的“标准”吗?virtualenv除了创建新目录之外,它还做了其他事情吗?什么是/tmp/目录?

答案1

令人惊讶的是,谷歌搜索“虚拟环境“带你到virtualenv文档。如果你想使用它,我建议至少快速阅读一下。

顾名思义,virtualenv这是一个为 Python 创建隔离或“虚拟”环境的工具。它允许您为不同的项目设置多个独立实例,每个实例都有自己的模块,甚至 Python 版本。这在各种情况下都很有用,尤其是当您没有管理员权限并想要安装 Python 模块时。来自文档:

需要解决的基本问题是依赖关系和版本,以及间接权限。假设您有一个应用程序需要 LibFoo 的版本 1,但另一个应用程序需要版本 2。您如何同时使用这两个应用程序?如果您将所有内容都安装到/usr/lib/python2.7/site-packages(或您的平台的标准位置),很容易陷入无意中升级不应升级的应用程序的情况。

或者更一般地讲,如果你想安装一个应用程序然后让它保持原样,该怎么办?如果应用程序正常运行,则其库或这些库的版本的任何更改都可能破坏该应用程序。

另外,如果你无法将软件包安装到全局site-packages目录中该怎么办?例如,在共享主机上。

在所有这些情况下,virtualenv都可以为您提供帮助。它创建一个具有自己的安装目录的环境,该环境不与其他虚拟环境共享库(并且也可以不访问全局安装的库)。

所以你明白了。lib/是模块所在的地方。include/是用于标题和其他共享内容。是用于存放主lib/ bin/`local/之外的东西,是可执行文件所在的地方。site-packages`` (in) module home, like your own applications. And finally,

顾名思义,该/tmp目录是一个临时目录 - 用于临时存储内容。根据系统的不同,它们可能会定期删除,也可能不会,或者在系统重新启动时删除。或者不删除,这取决于具体情况。您的第一个命令创建了一个/tmp名为的子目录vetest/

您的第二个命令,source,基本上意味着“运行此文件中列出的命令”。它是一个内置命令,是 shell 的一部分。此命令的结果是启动虚拟环境。您现在应该看到(venv)shell 提示符前面有 。

进入后,你使用了 Python 安装程序,或者pip,它自动包含在每个虚拟环境中。pip与 Python 包索引或吡啶甲酸。这是 Python 社区最接近中央存储库的东西,类似于 Perl 的亚太网络或 Ruby 的rubygems.org。 在您的案例中,pip正在寻找ipython-notebook模块,不幸的是不存在(笔记本是核心的一部分伊班安装)。如果你运行它,pip install ipython你将会得到类似下面的内容:

Downloading/unpacking ipython
  Downloading ipython-0.13.2.zip (6.4MB): 6.4MB downloaded
  Running setup.py egg_info for package ipython
        
Installing collected packages: ipython
  Running setup.py install for ipython

    Installing ipcluster3 script to /tmp/vetest/bin
    Installing irunner3 script to /tmp/vetest/bin
    Installing ipcontroller3 script to /tmp/vetest/bin
    Installing iptest3 script to /tmp/vetest/bin
    Installing pycolor3 script to /tmp/vetest/bin
    Installing iplogger3 script to /tmp/vetest/bin
    Installing ipengine3 script to /tmp/vetest/bin
    Installing ipython3 script to /tmp/vetest/bin
    
Successfully installed ipython
Cleaning up...

/tmp/vetest,您现在可以键入ipython3 notebook(假设您有 Python 3,无论如何您都应该使用它)来启动 IPython Notebook 服务器,并在浏览器中启动会话。不幸的是,它会失败,因为您缺少一堆依赖项,例如tornado,但这些都可以通过 轻松安装pip基本依赖项列表可在 IPython 网站上找到。其他功能(例如pylab需要NumPySciPy, 和matplotlib

最后,该deactivate命令退出您的virtualenv会话。

相关内容