2016-01-20 6 views
0

Я использую Python 2.7.6 и pysphere 0.1.7.I я получаю сообщение об ошибке в следующем коде:ImportError: не может импортировать имя «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() 

Ошибка говорит: ImportError: не импорт name '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' и просто имеет строку' from pysphere import VIServer'? – Wolf

+0

@ Вольф, он дает ту же ошибку; – Shasha99

+0

Можете ли вы включить полное сообщение об ошибке? Вы назвали свой скрипт pysphere.py? – M4rtini

ответ

1

EDIT: Действительно, но не корректная задача

, если вы уже импортирования pyshpere, почему бы не использовать

pysphere.VIServer.foo() 

Если это не то, что вы хотите, вы должны размещать больше кода


похоже, что вы назвали ваш питон скрипт copy.py

При запуске from pysphere import VIServer, который импортирует длинную цепь вещей, пока не доберется до:

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

Отсюда, питон использует глубину первого поиска, чтобы найти модуль с именем copy.py Где это может быть? Конечно! это прямо перед ним. Итак, теперь python повторно импортирует ваш модуль, потому что он называется copy.py. Здесь python понимает, что что-то пошло не так, и теперь он снова импортирует материал, который уже сделал. Это нехорошо, поэтому он уходит.

Если вы хотите, чтобы избежать этого, вам необходимо либо использовать

server=pysphere.VIServer() или переименовать файл, или обоих.

В общем, ваши файлы должны называться чем-то очень описательным, поэтому переименование, вероятно, является лучшим способом. Просто помните, если вы переименуете его в нечто, что существует за пределами языка python по умолчанию (например, я называю скрипт MatPlotLib), он будет импортировать ваш, прежде чем он найдет реальный!

+0

Отредактировано вопрос (добавлен код). Пожалуйста, проверьте; – Shasha99

+0

Попробуйте переименовать свой скрипт. Похоже, попытался импортировать его. –

+0

переименовано. Благодаря ! – Shasha99

Смежные вопросы