2013-09-21 3 views
1

paramiko 모듈을 사용하는 파이썬 코드가 있습니다. 기본적으로 paramiko가 설치되어 있지 않으므로 코드가 항상 실행되도록하려면 모듈 가져 오기를 시도하는 안전 가져 오기 메소드를 추가해야하며 실패 할 경우 설치를 시도합니다. 다음 코드와 동일한 코드를 얻는 가장 무난한 방법은 무엇입니까?모듈이없는 경우 설치하기

import os, importlib 

def SafeImport(module): 
    while True: 
     try: 
      module = importlib.import_module(module) 
      return module 
     except Exception as e: 
      print module + ' is not installed, you will need root privileges to install it. ' + str(e) 
      os.system('sudo yum --assumeyes install python-pip python-devel') 
      os.system('sudo pip install ' + module) 

paramiko = SafeImport('paramiko') 

이는 yum없이 리눅스 배포판 윈도우, 맥 OS와도 실패합니다, 분명하게 크로스 플랫폼 코드가 아닙니다. 사실 나는 스크립트를 실행하는 파이썬의 버전을 알 수 없으므로 importlib을 사용할 수 없다. 그런 문제를 해결할 수있는 일반적인 비유적인 방법은 무엇입니까?

+2

아마도 가장 적합한 해결책은 적절한 Python 패키지를 만들고 설치 파일 내에 요구 사항을 나열하는 것입니다. – zero323

답변

1

이 일의 가장 파이썬 방법이 다음과 같은 출력을 생성

import paramiko 

입니다.

Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
ImportError: No module named paramiko 

사용자는 시스템에 시스템을 설치하는 방법에 대해 현명한 결정을 내릴 수 있습니다. 물론 paramiko이 설치되도록 소프트웨어를 패키징 할 수 있습니다.

+0

사용자는 소프트웨어를 사용하는 방법 만 알아야하며'paramiko '또는 설치 절차에 신경 쓰지 않고 최소한의 두통으로 소프트웨어를 사용하기를 원합니다. 'pyinstaller'로 소프트웨어를 패키징하는 것은 제가 고려하고있는 옵션입니다.하지만 잘 작동 할 수도 있습니다. 그러나 바이너리 파일 배포를 피하려고했습니다. ** 나는 분명히 ** ImportError를 발생시키는 코드가 실제로 파이썬 적이라는 것에 동의하지 않는다고 말했 다. – e271p314

+0

@ e271p314 사용자가 소프트웨어를 어떻게 설치합니까? 소프트웨어 *는 사용자를위한 소프트웨어를 설치해서는 안됩니다. –

+0

내가 원했던 방식은 사용자가 스크립트를 다운로드하고 바로 사용할 수 있다는 것입니다. – e271p314

관련 문제