当前位置: 首页 > 面试题库 >

virtualenv:指定要使用系统范围的软件包还是本地的软件包

燕寒
2023-03-14
问题内容

有没有一种方法可以virtualenv为Python创建一个程序,并指定应在系统范围的安装中使用(继承哪些软件包,以及在系统范围的安装中应忽略哪些软件包?

更具体地说,例如,说在 系统 范围内安装了:

numpy
scipy
matplotlib

我想创建一个虚拟环境,例如:

  • 使用系统范围内的安装numpyscipy
  • 忽略 系统范围的matplotlib,让我 安装/升级自己的版本 (带有pip -U matplotlib)。

这可能吗?


问题答案:

最简单的方法是创建一个包含系统站点程序包的virtualenv,然后安装所需的版本:

$ virtualenv --system-site-packages foo
$ source foo/bin/activate
$ pip install Django==1.4.3

之后,您还可以通过检查 pip freeze并删除不需要的软件包来清理virtualenv 。 (使用删除系统站点软件包pip uninstall不再适用于较新版本的virtualenv)

另一种方法是创建一个干净的virtualenv并链接所需的部分:

$ virtualenv --no-site-packages foo
$ source foo/bin/activate
$ ln -s /usr/lib/python2.7/dist-packages/PIL* $VIRTUAL_ENV/lib/python*/site-packages

在非标准环境中,命令可能会略有不同。路径还取决于您使用的系统。为了找出库的路径,请启动python
shell(没有激活的virtualenv),导入模块并检查module_name.__path__。例如

Python 2.7.3 (default, Sep 26 2012, 21:51:14) 
[GCC 4.7.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import PIL
>>> PIL.__path__
['/usr/lib/python2.7/dist-packages/PIL']

另外,如果使用创建了virtualenv--system-site-packages,则可以使用来安装比系统中新的版本pip install--upgrade --ignore-installed numpy



 类似资料:
  • 问题内容: 是否可以使用本地文件系统中的pip安装软件包? 我已经为我的程序包运行了,该程序包已经创建了适当的tar.gz文件。该文件存储在我的系统上,位置为。 现在,在虚拟环境中,我想安装来自pypi或来自特定本地位置的软件包。 这可能吗? PS 我知道我可以指定。可以,但是我正在谈论使用该位置作为pip搜索的另一个位置(如果我键入)。 问题答案: 我很确定您正在寻找的东西称为选项。 你可以做

  • 有时你或许不想升级某些软件包,这时我们可“pin”住这些软件包,使它们不能被升级。我们可很容易实现该功能,只要编辑/etc/apt/preferences配置文件。该文件的格式如下: Package: <package> Pin: <pin definition> Pin-Priori

  • apt-show-versions可显示已安装软件包的版本,它提供了一种安全的方法从混合版本环境中升级指定版本的软件包。如以下命令只升级unstable的软件包: # apt-get install `apt-show-versions -u -b | grep unstable`

  • 问题内容: 当您用来安装软件包时,所有必需的软件包也会随之安装(依赖关系)。卸载该软件包还会删除从属软件包吗? 问题答案: 不,它不会卸载依赖包。它仅删除指定的软件包: figleaf == 0.6.1 鼻子== 1.1.2 pinocchio == 0.3 specloud == 0.4.5 figleaf == 0.6.1 鼻子== 1.1.2 pinocchio == 0.3 如您所见,这些

  • 问题内容: 我正在尝试使用通过该选项创建的新virtualenv安装MySQL_python适配器的1.2.2版本。PyPi中显示的当前版本是1.2.3。有没有办法安装旧版本?我发现有一篇文章指出应该这样做: 但是,安装后,它仍显示在站点包中。这是此软件包专用的问题,还是我做错了什么? 问题答案: TL; DR: (即) 首先,我发现您要执行的操作有两个问题。由于您已经安装了版本,因此应该卸载当前

  • 是否可以从本地文件系统使用pip安装软件包? PS我知道我可以指定。这将起作用,但我所说的是使用位置作为pip搜索的另一个位置,如果我键入。