2016-01-20 132 views
0

我使用python 2.7.6和pysphere 0.1.7.I我得到下面的代码中的错误:导入错误:无法导入名称“VIServer”

import sys 
import pysphere 
from pysphere import VIServer 
server=VIServer() 
server.connect(host,login,password) 
vm_target=server.get_vm_by_name(guest) 
if vm_target.get_status() == 'POWERED OFF': 
     vm_target.power_on() 

while vm_target.is_powering_on(): 
     continue 
server.disconnect() 

错误说:导入错误:无法导入名称'VIServer'

脚本正试图将文件从本地计算机复制到目标虚拟机。

完整的错误信息是:

Traceback (most recent call last): 
    File "copy.py", line 4, in <module> 
    from pysphere import VIServer 
    File "/usr/local/lib/python2.7/dist-packages/pysphere/__init__.py", line 171, in <module> 
    from pysphere.vi_task import VITask 
    File "/usr/local/lib/python2.7/dist-packages/pysphere/vi_task.py", line 34, in <module> 
    from pysphere.resources import VimService_services as VI 
    File "/usr/local/lib/python2.7/dist-packages/pysphere/resources/VimService_services.py", line 6, in <module> 
    from pysphere.resources.VimService_services_types import * 
    File "/usr/local/lib/python2.7/dist-packages/pysphere/resources/VimService_services_types.py", line 7, in <module> 
    import pysphere.ZSI 
    File "/usr/local/lib/python2.7/dist-packages/pysphere/ZSI/__init__.py", line 151, in <module> 
    from pysphere.ZSI.wstools.Namespaces import ZSI_SCHEMA_URI 
    File "/usr/local/lib/python2.7/dist-packages/pysphere/ZSI/wstools/__init__.py", line 7, in <module> 
    from pysphere.ZSI.wstools import WSDLTools 
    File "/usr/local/lib/python2.7/dist-packages/pysphere/ZSI/wstools/WSDLTools.py", line 15, in <module> 
    from pysphere.ZSI.wstools.Utility import Collection, CollectionNS, DOM, ElementProxy, basejoin 
    File "/usr/local/lib/python2.7/dist-packages/pysphere/ZSI/wstools/Utility.py", line 36, in <module> 
    import xml.dom.minidom 
    File "/usr/lib/python2.7/xml/dom/minidom.py", line 22, in <module> 
    from xml.dom.xmlbuilder import DOMImplementationLS, DocumentLS 
    File "/usr/lib/python2.7/xml/dom/xmlbuilder.py", line 3, in <module> 
    import copy 
    File "/home/shasha/devOps/pythonSamples/copy.py", line 4, in <module> 
    from pysphere import VIServer 
ImportError: cannot import name VIServer 

copy.py是脚本的名称。

任何帮助将是善良的;

+0

当你删除“import pysphere”这一行并且刚刚从'pysphere import VIServer'行删除了这行时会发生什么? – Wolf

+0

@Wolf,它给出了同样的错误; – Shasha99

+0

你能否包含完整的错误信息?你是否将脚本命名为pysphere.py? – M4rtini

回答

1

编辑:有效但不正确的问题

如果你已经导入pyshpere,为什么不使用

pysphere.VIServer.foo() 

如果这是你想要你就必须发布更多的代码不是


它看起来像你命名你的Python脚本copy.py

当您运行from pysphere import VIServer,是进口的东西长链,直到它到达:

File "/usr/lib/python2.7/xml/dom/xmlbuilder.py", line 3, in <module> 
import copy 

从这里,Python使用深度优先搜索,找到一个名为copy.py模块,其中可能有多大呢?当然!它就在它的前面。所以现在python重新导入你的模块,因为它被命名为copy.py。在这里,python意识到某些东西已经非常错误,现在它已经重新导入了已经做过的东西。这是不好的,所以它退出。

如果你想避免这种情况,你需要或者使用

server=pysphere.VIServer(),或重命名文件,或两者兼而有之。

通常你的文件应该被命名为非常具有描述性的东西,所以重命名可能是最好的方法。只要记住,如果你将它重命名为默认Python语言之外的东西(比如说,我命名了一个脚本MatPlotLib),它会在你找到真正的语言之前导入你的东西!

+0

编辑该问题(添加了代码)。请检查; – Shasha99

+0

尝试重命名您的脚本。看起来像试图导入它 –

+0

重命名工作。谢谢 ! – Shasha99

相关问题