模块导入失败,除非在当前目录中 - Python3

亚伦纳尔逊

我编写了一个小的 Facebook OAUTH 函数,每当我需要生成令牌以发布到我的 FB 提要或页面时,我都想将其用作模块。问题是除非我fb_auth在我无法调用模块的目录中

这是我的代码:

#!/usr/bin/env python3

''' Facebook authorization module'''

import requests
import os

def get_token(app_id, app_secret):
    payload = {'grant_type': 'client_credentials', 'client_id': app_id, 'client_secret': app_secret}
    response = requests.post('https://graph.facebook.com/oauth/access_token?', params=payload)
    result = eval(response.text)
    token = result['access_token']
    return token


if __name__ == '__main__':

    get_token()

因此,当我在工作目录 ( /home/scripts/python/fb_auth/) 中时,模块将按预期导入和运行:

>>> from fb_auth import get_token
>>> import os
>>> home = os.environ['HOME']
>>> work = home + '/scripts/python/'
>>> keys = work + 'apikeys'
>>> with open (keys, 'r') as f:
...    keys = eval(f.read())
... 
>>> app_id = keys['fb_keys']['riverwarn']['app_id']
>>> app_secret = keys['fb_keys']['riverwarn']['app_secret']
>>> get_token(app_id, app_secret)
'194XXXXXXXXXXXXXXXXXXXXXXXXXXXY_OM'

但是,如果我不在工作目录 ( /home/scripts/python/) 中,我将一无所获:

>>> import fb_auth
>>> fb_auth.get_token(app_id, app_secret)

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: module 'fb_auth' has no attribute 'get_token'

>>> from fb_auth import get_token

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ImportError: cannot import name 'get_token'

我是否需要将它放在主要的Python 模块文件夹中才能使其正常工作?

埃兰·罗森塔尔

它不会找到它,因为它没有出现在 sys.path 中。您可以通过安装将其添加到 sys.path 中。在此处查看完整文档:https : //docs.python.org/2/install/#how-installation-works

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章