What's the difference between apt-get virtualenv and pip virtualenv?

ぐ巨炮叔叔 提交于 2020-06-22 10:24:25

问题


What's the difference between the virtualenv from apt-get and that from pip? Are they interchangeable?

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

回答1:


At a high-level apt is something maintained by your system. Specifically anything in the debian family will use apt to manage things like drivers, compilers, things that require lower-level integration.

This means for things like numpy and scipy that require system-level integration with FORTRAN libraries, including the pip dependency won't actually work.

Some python packages that are tightly-linked with the system-level dependencies maintain apt packages that simply give you the full package all at once without having to coordinate between the two. The minus is that because Canonical's review process is pretty meticulous (as it should be) you will be getting, 9/10 a less-recent version of the library you're trying to use.

So, in short: you will often require apt packages to enable more recent pip installs, and while the same python dependencies may be available via apt, these libraries are typically much older and may not have required functionality.

A common workaround is to simply use the system dependencies from one of these packages rather than the full package. You can do this by use the build-deps flag. A common example given below:

apt-get build-dep python-scipy
pip install scipy

Which will actually give you the most up-to-date version of scipy while working within your virtualenv.




回答2:


apt or apt-get - installer debian similar distributions and install the packages in the directory /usr/lib/python2.7/dist-packages.

pip install - python package manager and install the packages in the directory /usr/local/lib/python2.7/dist-packages

Both directories are in the path of python that it is looking for modules import.

>>> 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:


They use separate repositories, you can check what versions you're getting from pip through here. As for apt-get you'll have to check your operating system's package manager version and source list to see what versions you're getting from there.



来源:https://stackoverflow.com/questions/34862790/whats-the-difference-between-apt-get-virtualenv-and-pip-virtualenv

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!