【问题标题】:How can you import a local version of a python package?如何导入本地版本的 python 包?
【发布时间】:2017-12-14 17:52:58
【问题描述】:

我想我在 matplotlib 中发现了一个错误。我使用 anaconda 作为包管理器,但必须从 github 下载 matplotlib 才能对其进行编辑。

如何导入我修改过的 matplotlib 版本以进行测试?我尝试使用

import /absolute/path/to/modified/matplotlib

,但这没有用。理想情况下,我想创建一个使用修改后的 matplotlib 而不是原始的 conda 环境,因此我可以轻松地在两者之间切换。

如何测试和运行开源库的修改版本,而又不弄乱原始版本的软件包?有没有办法从绝对路径导入库?

【问题讨论】:

  • 您可以为修改后的源代码构建一个 conda 包 (matplotlib.org/users/installing.html#conda-packages) 并将其安装到新环境中,但是您不知道您使用的是哪个操作系统,这将是多么困难是。在 Windows 上,这将是相当困难的。在 *nix 上,稍微容易一些

标签: python matplotlib anaconda


【解决方案1】:

试试这个

import sys

sys.path.append('/absolute/path/to/modified/matplotlib')

import matplotlib # modified

【讨论】:

  • 啊,是的,这会暂时更改您的 python 路径,这对我需要的东西很有用(我不想要永久更改)。但是,由于附加了库,因此原始库优先,这不起作用。我只是简单地将其编辑为以下内容,它有效: sys.path.insert(1, '/absolute/path/to/modified/matplotlib')
  • 如果有人也能找到 conda(或 virtualenv)环境的解决方案,我会再开放一段时间。我认为环境可以提供更优雅的解决方案,并且对其他人有用。如果没有环境解决方案出现,我会将其作为公认的答案。谢谢!
  • 虽然 matplotlib 导入显示了新版本,但我注意到“import matplotlib.pyplot as plt”引发了“ImportError: cannot import name '_path'”。不确定这是否是 matplotlib 安装过程中出现的问题,或者这是由于 matplotlib 是如何导入的......
  • 如果您将修改后的库包放在工作文件夹中(或工作文件夹中的链接),导入将优先于系统安装的库。
【解决方案2】:

你可以通过告诉anaconda直接安装包的tar-ball来安装本地版本,即

conda install package-version-py27.tar.bz2

您也可以使用--use-local 参数。

请参阅:https://github.com/conda/conda/issues/5266https://github.com/conda/conda/issues/1884

【讨论】:

  • 这只有在他们已经有 conda 包的压缩包时才有帮助。相反,他们有源目录...
【解决方案3】:

另一个没有提到的选项,如果你只是将matplotlib模块(复制或移动)放在你的项目目录中,python会先检查那里,找到你放在那里的版本,不用再找了。这正是您不应该为文件命名的原因,例如 math.py。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-02
    • 2019-12-26
    • 1970-01-01
    相关资源
    最近更新 更多