2012-09-02 2 views
0

루비에서 쉘로 실행중인 python을 어떻게 호출 할 수 있습니까? 실제로 쉘에서 파이썬으로 실행되는 일부 응용 프로그램과 통신하려면 루비가 필요합니다. 그래서 파이썬 (명령 '파이썬') cmd를 호출하고 파이썬 환경에서 라이브러리 (명령 '가져 오기 xyz') 가져 오기 루비 필요한 및이 가져온 된 라이브러리 함수를 실행합니다 (예 : 'xyz.showdate()') , 물론 결과를 얻을.ruby ​​(레일즈)에서 파이썬 셸 애플 리케이션을 호출

IO.popen 및 Open3.popen3 함수를 사용하여이 작업을 수행하려고 시도했지만 잘못되었습니다.

실제로 레일에서 jruby를 사용하지만 루비와 동일해야합니다.

+0

음 ... 자이 썬에서 파이썬 라이브러리가 작동합니까? 그런 다음 자바 클래스처럼 호출 할 수 있습니다. 기본적으로 포개어서 호출 할 때마다 다른 통역사를 실행하는 오버 헤드를 피할 수 있습니다. –

답변

2

아마도이 작업을 수행하고 싶지는 않을 것입니다. 루비에서 직접 결과를 얻을 수있을 때 루비 스크립트가 과도하게 복잡하게 만들 것입니다. 당신은 그러나 그 길을 갈하기로 결정하는 경우

, 당신은 당신이 필요 않는 파이썬 스크립트를 작성하고 루비 스크립트를 실행할 수 있습니다 :

# python-script.py 
import xyz 
if __name__ == '__main__': 
    xyz.showdate() 

그런 다음 그래서 당신의 루비 스크립트를 호출하는 배열 것 명령 다음 날 당신의 xyz.showdate 인쇄 제공

python path/to/python-script.py 

, 당신은 결과를 얻을 수있는 표준 출력을 수집 할 수 있습니다.

하지만 다시 한 번 생각해 보겠습니다.

+0

그래서 루비와 파이썬 셸 사이의 통신을 설정하는 다른 방법이 있습니까? 장기간 사용한다고 생각하면 XML-RPC는 어떨까요? 그것은 클라이언트 - 서버 아키텍처로 인해 느린가요? – mantonn

+0

* 느리게 * 될 수 있지만 확실히 느려지지 않을 수 있습니다 *. 또한 xml rpc 서버를 실행하는 python 데몬을 사용하면 인터프리터/응용 프로그램 시작 오버 헤드가 저장되므로 많은 선택 응용 프로그램을로드해야하는 경우 문제가 될 수 있습니다. 그것은 분명히 더 건전한 디자인입니다. –

+0

조언 해 주셔서 감사합니다. – mantonn

관련 문제