Python:导入 xboxapi 时遇到问题

Python: Trouble importing xboxapi

我是 Python 的新手,我正在尝试使用 Xbox api 和 this Python 包装器编写一个简单的脚本。

我成功安装了 xboxapi 包装器,但是当我尝试使用包装器 Github 页面中的这个简单代码对其进行测试时,出现错误。

代码:

from xboxapi import XboxApi

api = XboxApi(api_key="Your API key")

profile_info = api.get_profile()
print(profile_info)

错误:

Traceback (most recent call last):
  File "E:\ProgramFiles\Python 3.6\Scripts\xboxTest.py", line 1, in <module>
    from xboxapi import XboxApi
ImportError: cannot import name 'XboxApi'

如果我对这个错误的理解正确,则似乎可以识别 xboxapi 包,但不能识别 class XboxApi。但是它确实在代码中包含 XboxApi class。

# -*- coding: utf-8 -*-
import requests
import json

class XboxApi:
  # XboxApi key
  api_key = ""

  def __init__(self, api_key):
      """Only requires the XboxApi key"""
      self.api_key = api_key

  def get_profile(self):
      """Return information for current token profile"""
      res = self.request("https://xboxapi.com/v2/profile")
      return res.json()

  def get_xuid(self):
      """Return your xuid"""
      res = self.request("https://xboxapi.com/v2/accountXuid")
      return res.json()

  def get_messages(self):
      """Return your messages"""
      res = self.request("https://xboxapi.com/v2/messages")
      return res.json()

  def get_conversations(self):
      """Return your messages"""
      res = self.request("https://xboxapi.com/v2/conversations")
      return res.json()

  def get_xuid_by_gamertag(self, gamertag):
      """Return XUID by gamertag"""
      res = self.request("https://xboxapi.com/v2/xuid/{}".format(gamertag))
      return res.json()

  def get_gamertag_by_xuid(self, xuid):
      """Return gamertag by XUID"""
      res = self.request("https://xboxapi.com/v2/gamertag/{}".format(xuid))
      return res.json()

  def get_user_profile(self, xuid):
      """Return profile by XUID"""
      res = self.request("https://xboxapi.com/v2/{}/profile".format(xuid))
      return res.json()

def get_user_gamercard(self, xuid):
    """Return gamercard by XUID"""
    res = self.request("https://xboxapi.com/v2/{}/gamercard".format(xuid))
    return res.json()

def get_user_presence(self, xuid):
    """Return current presence information by XUID"""
    res = self.request("https://xboxapi.com/v2/{}/presence".format(xuid))
    return res.json()

def get_user_activity(self, xuid):
    """Return current activity information by XUID"""
    res = self.request("https://xboxapi.com/v2/{}/activity".format(xuid))
    return res.json()

def get_user_activity_recent(self, xuid):
    """Return recent activity information by XUID"""
    res = self.request("https://xboxapi.com/v2/{}/activity/recent".format(xuid))
    return res.json()

def get_user_friends(self, xuid):
    """Return friends by XUID"""
    res = self.request("https://xboxapi.com/v2/{}/friends".format(xuid))
    return res.json()

def get_user_followers(self, xuid):
    """Return followers by XUID"""
    res = self.request("https://xboxapi.com/v2/{}/followers".format(xuid))
    return res.json()

def get_recent_players(self):
    """Return recent players by XUID"""
    res = self.request("https://xboxapi.com/v2/recent-players")
    return res.json()

def get_user_gameclips(self, xuid):
    """Return game clips by XUID"""
    res = self.request("https://xboxapi.com/v2/{}/game-clips".format(xuid))
    return res.json()

# continue with #16

def send_message(self, message, xuids=[]):
    """Send a message to a set of user(s)"""
    headers = {
        "X-AUTH": self.api_key,
        "Content-Type": "application/json"
    }

    payload = {
        "message": message,
        "to": []
    }

    for xuid in xuids:
        payload["to"].append(xuid)

    res = requests.post("https://xboxapi.com/v2/messages", headers=headers, data=json.dumps(payload))
    res.json()

def request(self, url):
    """Wrapper on the requests.get"""
    headers = {"X-AUTH": self.api_key}
    res = requests.get(url, headers=headers)
    return res

有没有我遗漏的简单的东西?

xboxapi 是一个包,所以当您这样做时

from xboxapi import ZooLander

您正在尝试从 xboxapi 包中导入 ZooLander class。问题是,ZooLander class 不在 xboxapi 包中,它在包内的模块(Python "file" 的说法)中。有几种方法可以解决这个问题。您可以导入模块并使用点符号来引用 class:

from xboxapi import StillerMovies
z = StillerMovies.ZooLander()

或者您可以像这样直接导入 class:

from xboxapi.StillerMovies import ZooLander
z = ZooLander()

以上假设 class ZooLander 位于 xboxapi 包顶部名为 StillerMovies.py 的文件中。

此软件包的功能与许多其他软件包有所不同。您需要这样导入:

from xboxapi.xbox_api import XboxApi

api = XboxApi(api_key="Your API key")