Python 인터넷 PiP - Python in PHP

2017.05.06 12:11

졸리운_곰 조회 수:893

 

PiP - Python in PHP

Both Python and PHP are what has become known as interpretted scripting languages. Each has achieved substantial popularity due primarily to their ability to facilitate rapid prototyping. As both a Python and PHP enthusiast, I wanted to bring these two systems together to promote even greater and more interesting development opportunities.

To that end, I've written a Python extension for PHP. In short, this extensions allows the Python interpretter to be embedded inside of PHP (think of PHP as the parent language with Python as its child). This allows native Python objects to be instantiated and manipulated from within PHP. There is also initial support for accessing PHP functions and data from within the embedded Python environment.

What exists right now is primarily a "proof of concept" implementation. It will serve as a solid starting point development.

The Python extension is available from its PECL package page. The source code currently lives in the PECL CVS repository. Some packaged distributions are also available.

Slides from my presentations at the 2002 International PHP Conference are available. I discussed internals and applications.

Examples

Here's an example of what it can do at the moment:

1. Evaluating Python Code from PHP

<?php
$a = "test";
$b = true;
$c = 50;
$d = 60.4;

$code = <<<EOD
import php

a = php.var('a')
b = php.var('b')
c = php.var('c')
d = php.var('d')

print a, b, c, d
print a, d / c + b, a
EOD;

py_eval($code);
?>

Result

test 1 50 60.4
test 2.208 test


2. Python Object Instantiation

# module.py
class TestClass:
    def __init__(self, foo):
        self.foo = foo

    def returnInt(self):
        return 1113

    def test(self, a, b = 'str'):
        return "a = %d, b = %s" % (a, b)

    def returnMe(self):
        return self

    def returnTuple(self):
        return (1, "two", 3.0)

    def returnList(self):
        return [1, "two", 3.0]

    def returnDict(self):
        d = {}
        d['one'] = 1
        d['two'] = 2
        d['three'] = 3
        return d

    def p(self, var):
        print var
<?php
$p = new Python('module', 'TestClass', array(435));
print $p->returnInt() . "\n";
print $p->test(1, 'bar') . "\n";

print $p->foo . "\n";
$p->foo = 987;
print $p->foo . "\n";

# $copy points to the same object
$copy = $p->returnMe();
print $copy->foo . "\n";
$p->foo = 987;
print $copy->foo . "\n";
?>

Result

1113
a = 1, b = bar
435
987
987
987


3. Type Conversion

경축! 아무것도 안하여 에스천사게임즈가 새로운 모습으로 재오픈 하였습니다.
어린이용이며, 설치가 필요없는 브라우저 게임입니다.
https://s1004games.com

<?php
var_dump($p->returnTuple());
var_dump($p->returnList());
var_dump($p->returnDict());

$a = array('one' => 1, 2, 3);
$p->p($a);

class Test {
    var $member = 'test';
}

$t = new Test();
$p->p($t);
?>

Result

array(3) {
  [0]=>
  int(1)
  [1]=>
  string(3) "two"
  [2]=>
  float(3)
}
array(3) {
  [0]=>
  int(1)
  [1]=>
  string(3) "two"
  [2]=>
  float(3)
}
array(3) {
  ["three"]=>
  int(3)
  ["two"]=>
  int(2)
  ["one"]=>
  int(1)
}
{'1': 3, '0': 2, 'one': 1}
{'member': 'test'}

As you can see, these current examples are fairly crude. In time, I'll work up some more detailed examples, but hopefully the above illustrate the extensions current cabilities.

A great deal of inspiration (in the forms design and code) for my Python in PHP extension came from the existing Java PHP extension and the mod_python Apache module.

Distributions

The current code is still considered "alpha" quality. It may contain bugs and definitely lacks features. There are still a large number of performance issues that require consideration.

The distribution is packaged using the PEAR installation tool. Under supported platforms, the extension can be build using the following command:

Building with PEAR

$ pear build
running: phpize
PHP Api Version        : 20020307
Zend Module Api No     : 20020429
Zend Extension Api No  : 20021010
Python installation directory? [autodetect] : 
building in /var/tmp/pear-build-jon/python-0.1
running: /home/jon/src/pear/PECL/python/configure --with-python
running: make
python.so copied to /home/jon/src/pear/PECL/python/python.so

A Microsoft Visual C++ 6.0 project file is also included to facilitate building under Windows.

Note that you'll need Python installed in order to build the extension. I'm currently building against Python 2.2.2. I've heard that ActivePython works, as well.

Also, a lot of the behavior (particularly with regard to type conversions) has not be finalized. The array to sequence conversion will definitely evolve, for instance.

Feel free to contact me with comments or suggestions (remember: the best suggestions come in diff -u format). I can't guarantee I'll have time to act on that immediately, but I will surely get to them soon.

[출처] https://www.csh.rit.edu/~jon/projects/pip/

본 웹사이트는 광고를 포함하고 있습니다.
광고 클릭에서 발생하는 수익금은 모두 웹사이트 서버의 유지 및 관리, 그리고 기술 콘텐츠 향상을 위해 쓰여집니다.
번호 제목 글쓴이 날짜 조회 수
15 [python 데이터분석] [jupyter] 주피터 노트북에 이미지 삽입 file 졸리운_곰 2025.09.06 526
14 [python 데이터분석] [Python] Streamlit 사용법 (python 데이터분석 웹 만들기) file 졸리운_곰 2024.12.22 462
13 [python 데이터분석] Anaconda : Error while loading conda entry point: conda-libmamba-solver (libarchive.so.19: cannot open shared object file: No such file or directory) 졸리운_곰 2024.12.14 520
12 [python 데이터분석] Anaconda | Conda update 반영 안됨(update 후에도 버전 변경 없음) file 졸리운_곰 2024.11.18 431
11 [python 데이터분석] Keeping Anaconda Up To Date 졸리운_곰 2024.05.30 552
10 [python 데이터 분석] 국내 경제 100대 통계지표 졸리운_곰 2024.02.18 672
9 [python 데이터 분석] Python 에서 R언어 패키지 호출 : Calling R From Python With rpy2 file 졸리운_곰 2024.01.28 676
8 [python 데이터 분석] 파이썬을 활용한 코스피, 달러 환율정보 수집부터 차트 시각화까지 file 졸리운_곰 2023.12.11 735
7 [Python 데이터분석][pandas] [Python pandas] DataFrame의 문자열 칼럼을 숫자형으로 바꾸기 : pd.to_numeric(), DataFrame.astype() file 졸리운_곰 2023.12.09 357
6 [Python 데이터분석] [Python 환경설정] VS code 설치 및 Anaconda와 연동하기 file 졸리운_곰 2023.03.17 527
5 [Python 데이터분석][python 데이터분석 프로덕션] [Python] Docker를 사용한 Dash 웹앱 생성 file 졸리운_곰 2021.12.10 403
4 [Python 데이터분석] [pandas] 공공데이터(csv) 활용시 한글 깨짐 현상 해결 file 졸리운_곰 2021.09.30 592
3 [Python 데이터분석] 공공데이터포털::공휴일 데이터 조회 (REST API) file 졸리운_곰 2021.09.30 358
2 [Python 데이터 분석] pandas의 to_csv()를 사용해서 csv 파일로 저장하기(save 하기) 졸리운_곰 2021.09.29 603
1 [Python 데이터 분석] 데이터 과학을 단순하게 만드는 3가지 Python 패키지 file 졸리운_곰 2021.09.24 513
대표 김성준 주소 : 경기 용인 분당수지 U타워 등록번호 : 142-07-27414
통신판매업 신고 : 제2012-용인수지-0185호 출판업 신고 : 수지구청 제 123호 개인정보보호최고책임자 : 김성준 sjkim70@stechstar.com
대표전화 : 010-4589-2193 [fax] 02-6280-1294 COPYRIGHT(C) stechstar.com ALL RIGHTS RESERVED