【问题标题】:How to import 3rd party module to python if its name is taken?如果使用了第 3 方模块的名称,如何将其导入 python?
【发布时间】:2013-05-11 07:41:43
【问题描述】:

我想使用这个类:google-mail-oauth2-tools,但如果我会做类似import oauth2 的事情,导入的类将是python-oauth2,它已被弃用并且不支持 oauth2)即使名称是 oauth2) 如何使用谷歌模块?需要先安装吗?

【问题讨论】:

    标签: python python-2.7 oauth-2.0


    【解决方案1】:

    看看the docs you linked,看起来Google Mail oauth2 模块应该被下载并就地使用。

    您当然可以安装它……但您不能安装两个同名的(顶级)模块,因此您必须先卸载 python-oauth2

    但是,如果您只是就地使用它,在 Python 2.7 中,您可以在一个目录中拥有一个 oauth2.py,而在 stdlib 中拥有一个。无论您首先导入哪个都会“获胜”;随后对import oauth2 的任何尝试都将获得第一个。

    要强制它导入正确的路径(以一种同样适用于旧版 Python 2.x 和 Python 3.x 的方式),您可能需要使用 imp 模块明确地为其指定路径。

    例如,如果您打算将oauth2.py 放在导入它的脚本旁边,而不仅仅是import oauth2,请执行以下操作:

    script_path = os.path.abspath(os.path.dirname(__file__))
    f, path, desc = imp.find_module('oauth2', [script_path])
    oauth2 = imp.load_module('oauth2', f, path, desc)
    

    ...尽管在某些情况下,您可以通过假设当前工作目录是脚本目录和/或永久修改sys.path 等来避免作弊,因此您可以通过各种不同的方式简化它——最终,如果安全的话,就这样吧:

    sys.path = ['.'] + sys.path
    import oauth2
    

    不过,为了安全(和可读性),我会考虑执行以下操作之一:

    • 卸载python-oauth2
    • 将下载的oauth2.py 重命名为其他名称,例如google_oauth2.py,然后是import google_oauth2
    • 将下载的oauth2.py打包成一个包,例如import googletools.oauth2

    【讨论】:

      猜你喜欢
      • 2020-10-02
      • 1970-01-01
      • 1970-01-01
      • 2012-09-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-12-13
      • 1970-01-01
      相关资源
      最近更新 更多