除非在当前目录中,否则模块导入失败 - Python3
Module import fails unless in current directory - Python3
我编写了一个小的 Facebook OAUTH 函数,每当我需要为我的 FB 提要或页面生成 post 的令牌时,我想将其用作模块。问题是除非我在 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'
我是否需要将其放入 main Python 模块文件夹才能使其正常工作?
它不会找到它,因为它没有出现在 sys.path 中。
您可以通过安装将其添加到 sys.path。
在此处查看完整文档:https://docs.python.org/2/install/#how-installation-works
我编写了一个小的 Facebook OAUTH 函数,每当我需要为我的 FB 提要或页面生成 post 的令牌时,我想将其用作模块。问题是除非我在 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'
我是否需要将其放入 main Python 模块文件夹才能使其正常工作?
它不会找到它,因为它没有出现在 sys.path 中。 您可以通过安装将其添加到 sys.path。 在此处查看完整文档:https://docs.python.org/2/install/#how-installation-works