Python xmlrpclib错误';未找到模块';尝试访问gandi api时

Python xmlrpclib错误';未找到模块';尝试访问gandi api时,python,api,python-3.x,xml-rpc,Python,Api,Python 3.x,Xml Rpc,我正试图在gandi api中设置DS记录,如 它声明为“import xmlrpclib”,但我立即得到一个错误“module not found”(全文复制如下) 我不知道他们在哪里使用“来自xmlrpc导入客户端”,但在我的上下文中,gandi API没有响应 python3课程: >>> import xmlrpclib Traceback (most recent call last): File "<pyshell#69>", line 1, in

我正试图在gandi api中设置DS记录,如

它声明为“import xmlrpclib”,但我立即得到一个错误“module not found”(全文复制如下)

我不知道他们在哪里使用“来自xmlrpc导入客户端”,但在我的上下文中,gandi API没有响应

python3课程:

>>> import xmlrpclib
Traceback (most recent call last):
  File "<pyshell#69>", line 1, in <module>
    import xmlrpclib
ImportError: No module named 'xmlrpclib'
>>> from xmlrpc import client
>>> api = xmlrpclib.ServerProxy('https://rpc.gandi.net/xmlrpc/')
Traceback (most recent call last):
  File "<pyshell#71>", line 1, in <module>
    api = xmlrpclib.ServerProxy('https://rpc.gandi.net/xmlrpc/')
NameError: name 'xmlrpclib' is not defined
>>> api = xmlclient.ServerProxy('https://rpc.gandi.net/xmlrpc/')
Traceback (most recent call last):
  File "<pyshell#72>", line 1, in <module>
    api = xmlclient.ServerProxy('https://rpc.gandi.net/xmlrpc/')
NameError: name 'xmlclient' is not defined
>>> api = client.ServerProxy('https://rpc.gandi.net/xmlrpc/')
>>> apikey = '<my_api_key_here>'
>>> version = api.version.info(apikey)
>>> print(version)
{'api_version': '3.3.29'}
>>> domain.dnssec.create('KEY', 'domain2.com', 1, 256, 'KEY')
Traceback (most recent call last):
  File "<pyshell#77>", line 1, in <module>
    domain.dnssec.create('KEY', 'domain2.com', 1, 256, 'KEY')
NameError: name 'domain' is not defined
>>> client.dnssec.create('KEY', 'domain2.com', 1, 256, 'KEY')
Traceback (most recent call last):
  File "<pyshell#78>", line 1, in <module>
    client.dnssec.create('KEY', 'domain2.com', 1, 256, 'KEY')
AttributeError: 'module' object has no attribute 'dnssec'

我不确定您是否给出了真正的API密钥,但我敦促您尽快更改它。在任何情况下,在Python中,顶级变量/名称都不是凭空而来的——它们是通过
import
或赋值语句(
x=123
)引入的(或者通常是通过
def
class
等其他语句引入的)

您从未将任何内容分配到
变量,那么它就不可能工作;这同样适用于
xmlrpclib
;由于导入语句失败,因此未定义名称

那么:

>>> from xmlrpc import client
>>> api = client.ServerProxy('https://rpc.gandi.net/xmlrpc/')
>>> apikey = '123'
>>> api.domain.dnssec.create(apikey, 'domain2.com', {'algorithm': 42, 
                             'flags': 123, 'public_key': 'foobarbaz'})

Python3中的xmlrpclib模块已重命名为xmlrpc.client。将源代码转换为Python 3时,2to3工具将自动调整导入。

您试图使用未初始化的变量。也许您应该阅读Python教程。您可能会在Python示例下看到一条重要提示,您可能正试图从文档中复制—给出的示例是针对Python 2的—您正试图使用Python 3,因此需要使用第二种形式,因为我遇到了一个无效键错误。我正在使用的键对于PhP脚本非常有效
>>> api = client.ServerProxy('https://rpc.gandi.net/xmlrpc/')
>>> apikey = 'MyKeyThatWorksInPHPjustFineForOtherScripts'
>>> version = api.version.info(apikey)
>>> print(version)
{'api_version': '3.3.29'}
>>> domain.dnssec.create('xxxxx', 'domain2.com', 1, 256, '97BF8186C193EBF12A794A75FEF4B331A29C1A26')
>>> from xmlrpc import client
>>> api = client.ServerProxy('https://rpc.gandi.net/xmlrpc/')
>>> apikey = '123'
>>> api.domain.dnssec.create(apikey, 'domain2.com', {'algorithm': 42, 
                             'flags': 123, 'public_key': 'foobarbaz'})