今天看到一个命令使用的例子virtualenv
,是下面四个命令:
virtualenv /tmp/vetest
source /tmp/vetest/bin/activate
pip install ipython-notebook
deactivate
第一个命令创建目录,/tmp/vetest/
其中有四个子目录:lib
,,,,。include
local
bin
然后我们使用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
需要NumPy
,SciPy
, 和matplotlib
。
最后,该deactivate
命令退出您的virtualenv
会话。