2009-04-15 4 views
4

필자는 Perl 라이브러리 (사실 Perl 클래스)를 많이 작성했으며 Python 응용 프로그램에서 이들 중 일부를 사용하려고합니다. SWIG를 사용하거나 Python 용 Perl API를 작성하지 않고이 작업을 수행하는 자연스러운 방법이 있습니까? PHP의 Perl interface과 유사한 방법을 묻습니다. 파이썬에서 Perl을위한 그런 종류의 작업이 없다면. 파이썬에서 Perl 클래스를 사용하는 가장 쉬운 방법은 무엇입니까?Python에서 Perl 라이브러리를 사용하려면 어떻게해야합니까?

답변

8

개인적으로 필자는 Perl 라이브러리를 XML/RPC 또는 다른 메커니즘을 통해 서비스로 제공합니다. 그렇게하면 Python 응용 프로그램에서 자연스럽게 호출 할 수 있습니다.

+0

고맙습니다 shane 순간 나는 파이썬에서 다시 작성하거나 소켓을 사용하여 두 언어를 의사 소통하기위한 API를 구현하는 2 가지 옵션을 고려 중입니다. – systemsfault

1

체크 아웃 PyPerl을 확인하십시오.

경고 : 현재 PyPerl은 유지 보수가되지 않으므로 안정성이 필요한 경우에는 사용하지 마십시오.

+3

예 실제로 안정성은 나를위한 중요한 척도입니다. – systemsfault

+0

아마도 Perl 클래스를 Python으로 이식하는 것이 가장 좋습니다. AFAIK, PyPerl은 현재 Python 코드에서 Perl 코드를 호출하는 유일한 방법입니다. – splicer

+0

또는 파이썬 코드를 perl : D로 이식하십시오.perl 코드의 양이 파이썬 코드보다 훨씬 크기 때문에 시간이 많이 걸리지 않을 수 있습니다. 하지만이 경우에는 파이썬에서 코드를 작성할 기회를 놓치게 될 것입니다. 그러나 이것은 용인 할 수 있습니다. :). – systemsfault

2

Python이 Perl과 함께 Parrot VM에서 실행될 수있는 기회를 놓치 셨습니다. 에이프릴 게시 된 2009 PEP 401 1, 그리고 FLUFL 읽기의 공식 행위 중 하나에 :

  • 는 C가 세 미만의 프로그래머들에 의해 거의 보편적 인 거부와 20 세기 언어임을 인식 30에서 CPython 구현은 Python 2.6.2 및 3.0.2의 릴리스로 종료됩니다. 그 후 Python의 참조 구현은 Parrot 가상 시스템을 대상으로합니다. Python (예 : Jython, IronPython 및 PyPy)의 대체 구현은 공식적으로 권장되지 않지만 용인됩니다.
+2

Uh oh, 문제가 있습니다 : "이 문서는 Python Steering Union의 자산입니다 (존재하지 않는 Python Secret Underground와 혼동해서는 안됩니다).이 문서를 읽는 것이 좋겠지 만 인용, 복사, 수정 또는 배포에 대해 생각조차하지 마십시오. " – mpeters

+0

스티어링 유니언은 재고 할 예정입니까? – gimel

+1

"4 월 1 일"부분은 대담하게 만들어야한다고 생각합니다. 나는 그것을 더 신중하게 읽을 때까지 오히려 혼란 스러웠다. – alberge

3

은 "어떻게 파이썬에서 펄 클래스를 사용하는 가장 쉬운 방법입니다?"

가장 쉬운 것. Perl을 Python으로 다시 작성하고 끝내십시오. 진지하게. 가장 쉬운 언어 인 —을 선택하십시오. Perl을 뒤에 남겨두면 큰 손실이 없습니다. 클래스를 파이썬으로 다시 작성하면 작은 방법으로 클래스를 개선 할 수 있습니다.

쉽지 않습니다. Python의 subprocess 모듈을 사용하여 Perl 응용 프로그램을 실행하십시오. Perl 응용 프로그램에서 Perl 클래스를 문제없이 사용합니다. 펄이 파이썬에서 입력을 취득하는 파이썬

someApp.py | something.pl | finalStep.py 

이 1 (때때로), 세 개의 동시 프로세스로 응용 프로그램을 깨는 프로세서 리소스를 많이을 사용하여 실행의 장점을 가지고에 출력을 생성하므로 쉽게 파이프 라인을 만들 수 있습니다/3 시간.

다른 모든 것들이 훨씬 쉽습니다.

+0

실제로 파이썬 용 Perl API는 두 번째 단계에서 설명한 것과 같은 의미였습니다. 필자의 Perl 라이브러리는 pm 파일이고 독립적 인 실행 파일이 아니기 때문에 파이 라이브러리에 액세스 할 수있는 pl 파일을 작성해야하기 때문에 파이썬 용 작은 API도 제공해야합니다. – systemsfault

4

아직 해보지 않았지만 Inline::Python은 Perl에서 Python을 호출하도록합니다.

당신은 당신의 파이썬 응용 프로그램을로드하기 위해 펄의 얇은 비트를 사용할 수 있어야하고 Perl 객체에 접근하기 위해 I :: P와 함께 제공되는 perl 파이썬 패키지를 사용할 수 있어야합니다.

관련 문제