2016-11-18 7 views
0

아래 python 스크립트를 실행하여 호스트 컴퓨터에 ping 명령을 실행했습니다. 오류 아래Python API를 사용하여 프로그래밍 방식으로 실행하는 중에 오류가 발생했습니다.

Traceback (most recent call last): 
    File "ansible.py", line 2, in <module> 
    from ansible.parsing.dataloader import DataLoader 
    File "/home/tcprod/schaitanya/python_ansible/ansible.py", line 2, in <module> 
    from ansible.parsing.dataloader import DataLoader 
ImportError: No module named parsing.dataloader 

아래 얻는 것은 전체 스크립트이에 대한

from collections import namedtuple 
from ansible.parsing.dataloader import DataLoader 
from ansible.vars import VariableManager 
from ansible.inventory import Inventory 
from ansible.playbook.play import Play 
from ansible.executor.task_queue_manager import TaskQueueManager 

#Initialize the objects that are needed for the play. 

Options = namedtuple('Options', 
       ['connection', 'module_path', 'forks', 'become', 
       'become_method', 'become_user', 'check'] 
      ) 

#initialize needed objects 

variable_manager = VariableManager() 
loader = DataLoader() 

options = Options(
    connection='local', module_path='', forks=100, become=True, 
    become_method='sudo', become_user='root', check=False) 
passwords = dict(vault_pass='secret') 

#create inventory and pass to variable manager 

inventory = Inventory(loader=loader, variable_manager=variable_manager, 
         host_list='localhost') 
variable_manager.set_inventory(inventory) 

#create play with tasks 

play_src = dict(
    name="ping localhost", 
    hosts="localhost", 
    gather_facts="no", 
    tasks=[ 
     # installing dependencies 


     dict(name="ping local host", 
      action=dict(module="ping")) 
      ]) 

play = Play().load(play_src, variable_manager=variable_manager, loader=loader) 


tqm = None 
try: 
    tqm = TaskQueueManager(
      inventory=inventory, 
      variable_manager=variable_manager, 
      loader=loader, 
      options=options, 
      passwords=passwords, 
      stdout_callback="default", 
     ) 
    result = tqm.run(play) 
finally: 
    if tqm is not None: 
     tqm.cleanup() 

봤지만 약간의 도움을 얻었다. 이 종속성 문제를 해결하고 파이썬 프로그램을 작동시키는 방법을 알려주십시오.

+0

파이썬에서 이름을 중복하지 마십시오. 스크립트의 이름을'anonym.py'에서'my_ansible.py'로 변경하십시오. –

+0

감사합니다. 같은 것을 시도했습니다. 그러나 오류는 지속됩니다. – sntchaitu

답변

1

내 환경에서 본 것부터 스크립트가 루트 디렉토리에 없을 때이 오류가 발생했습니다.

[[email protected] API]# ./my_ansible.py 
Traceback (most recent call last): 
    File "./my_ansible.py", line 5, in <module> 
     from ansible.parsing.dataloader import DataLoader 
    File "/home/xxx/projects/API/ansible.py", line 5, in <module> 
ImportError: No module named parsing.dataloader 

내가/루트로 이동하면 - 그것은 잘 실행 :

[[email protected] ~]# ./my_ansible.py 
[[email protected] ~]#