【问题标题】:How to handle packages shadowing each other?如何处理相互遮蔽的包裹?
【发布时间】:2014-03-11 16:20:36
【问题描述】:

我已经通过 Ubuntu 软件包安装了大部分模块,因此它们位于 /usr/lib/python3/dist-packages 中。有些太旧或无法通过 Ubuntu 获得,所以我通过 pip 安装了它们,它们位于/usr/local/lib/python3.3/dist-packages

到目前为止一切顺利。但是,两者都包含一个包mpl_toolkits,但内容不同。尽管存在/usr/local/lib/python3.3/dist-packages/mpl_toolkits/basemapimport mpl_toolkits.basemap 仍会失败,因为mpl_toolkits 首先在/usr/lib/python3/dist-packages/mpl_toolkits 中找到,其中包含许多模块,但不包含basemap

因此,实际上,分发级别的mpl_toolkits 正在遮蔽自定义安装的mpl_toolkits。处理这个的正确方法是什么?

【问题讨论】:

    标签: python ubuntu package shadowing


    【解决方案1】:

    通常,这应该由包__path__ 属性处理:

    In [4]: mpl_toolkits.__path__ 
    Out[4]: 
    ['/usr/local/lib/python3.3/dist-packages/mpl_toolkits',
     '/usr/lib/python3/dist-packages/mpl_toolkits']
    

    但是,如果安装了第二个mpl_toolkits 第一个被导入,它需要为mpl_toolkits重新加载以实现其分布在文件系统上的多个位置。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-01-13
      • 2020-11-04
      • 1970-01-01
      • 2016-08-29
      • 2020-01-02
      • 2015-09-12
      • 2014-09-08
      相关资源
      最近更新 更多