来自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
答案 0 :(得分:10)
在高级别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。
答案 1 :(得分:3)
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']
答案 2 :(得分:1)
他们使用单独的存储库,您可以查看从pip
到here获得的版本。对于apt-get
,您必须检查操作系统的软件包管理器版本和来源列表,以查看您从那里获得的版本。