apt-get virtualenv 和 pip virtualenv 有啥区别?
Posted
技术标签:
【中文标题】apt-get virtualenv 和 pip virtualenv 有啥区别?【英文标题】:What's the difference between apt-get virtualenv and pip virtualenv?apt-get virtualenv 和 pip virtualenv 有什么区别? 【发布时间】:2016-04-24 02:23:57 【问题描述】:apt-get 的 virtualenv 和 pip 的 virtualenv 有什么区别?它们可以互换吗?
apt-get install virtualenv
The following extra packages will be installed:
python-chardet-whl python-colorama-whl python-distlib-whl python-html5lib-whl python-pip-whl python-requests-whl
python-setuptools-whl python-six-whl python-urllib3-whl python3-virtualenv
The following NEW packages will be installed:
python-chardet-whl python-colorama-whl python-distlib-whl python-html5lib-whl python-pip-whl python-requests-whl
python-setuptools-whl python-six-whl python-urllib3-whl python3-virtualenv virtualenv
【问题讨论】:
apt-get 用于系统依赖,pip 用于python 依赖。 没有问这个,我问的是 virtualenv(s) 为什么Debian版本有这么多依赖?它们可以互换吗? @TomZych 我没有说你是,我也从来没有这样想过任何人。我只是在问一个问题,并尽我所能防止它偏离主题。我不是在问 pip 和 apt-get 之间的区别。我的印象是 *** 鼓励直接沟通,而不是拘泥于礼貌,如果我弄错了,请纠正我。 【参考方案1】:在高级别的apt
是由您的系统维护的。具体来说,debian 系列中的任何东西都将使用apt
来管理驱动程序、编译器等需要低级集成的东西。
这意味着像 numpy
和 scipy
这样需要与 FORTRAN 库进行系统级集成的东西,包括 pip
依赖项实际上将不起作用。
一些与系统级依赖关系紧密链接的 python 包维护apt
包,它们只是一次性为您提供完整的包,而无需在两者之间进行协调。缺点是因为 Canonical 的审核过程非常细致(应该如此),您将获得 9/10 的您尝试使用的库的较新版本。
因此,简而言之:您通常需要apt
包来启用更新的pip
安装,虽然可以通过apt
获得相同的python 依赖项,但这些库通常更旧并且可能不需要功能。
一种常见的解决方法是简单地使用其中一个包中的系统依赖项,而不是完整的包。您可以使用build-deps
标志来执行此操作。下面给出一个常见的例子:
apt-get build-dep python-scipy
pip install scipy
在您的 virtualenv 中工作时,这实际上会为您提供最新版本的 scipy。
【讨论】:
【参考方案2】:apt
或apt-get
- 安装程序与 debian 类似的发行版并将软件包安装在目录/usr/lib/python2.7/dist-packages
中。
pip install
- python 包管理器并将包安装在目录/usr/local/lib/python2.7/dist-packages
这两个目录都在它正在寻找模块导入的 python 路径中。
>>> import sys
>>> sys.path
['/usr/local/lib/python2.7/dist-packages', '/usr/lib/python2.7/dist-packages', '/usr/lib/python2.7', '/usr/lib/python2.7/plat-x86_64-linux-gnu', '/usr/local/lib/python2.7/dist-packages', '/usr/lib/python2.7/dist-packages/gtk-2.0', '/usr/lib/pymodules/python2.7']
【讨论】:
【参考方案3】:他们使用单独的存储库,您可以查看从 pip
到 here 获得的版本。至于apt-get
,你必须检查你的操作系统的包管理器版本和源列表,看看你从那里得到了什么版本。
【讨论】:
以上是关于apt-get virtualenv 和 pip virtualenv 有啥区别?的主要内容,如果未能解决你的问题,请参考以下文章