【发布时间】:2013-05-11 07:41:43
【问题描述】:
我想使用这个类:google-mail-oauth2-tools,但如果我会做类似import oauth2 的事情,导入的类将是python-oauth2,它已被弃用并且不支持 oauth2)即使名称是 oauth2)
如何使用谷歌模块?需要先安装吗?
【问题讨论】:
标签: python python-2.7 oauth-2.0
我想使用这个类:google-mail-oauth2-tools,但如果我会做类似import oauth2 的事情,导入的类将是python-oauth2,它已被弃用并且不支持 oauth2)即使名称是 oauth2)
如何使用谷歌模块?需要先安装吗?
【问题讨论】:
标签: python python-2.7 oauth-2.0
看看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。【讨论】: