从PHP迁移到Python

10

目前我所有的基于Web的编程都是用PHP完成的,每天我都越来越想尝试Python。

不是说我没有在解释器中试过它,而是真的想用Python编写一个Web项目,并可能几乎完全转向Python。

但是,我知道Python不是严格意义上的Web编程语言(这很棒),这让我想知道是否需要跨越一些障碍才能在Web上使用它。

一个简单的例子是,我确信Python默认情况下没有像 $ _POST 这样的变量。那么类似的功能如何在Python中实现呢?

我怎样才能顺利地从PHP转向Python? 我如何在Web上使用Python?

5个回答

4

3

Python不像PHP那样通过CGI执行。这个接口有一个API来访问这些变量。

Django这样的框架整合了这个API。建议使用这样的框架,因为它可以让很多事情变得更加容易。


我现在正在研究Django和其他框架,你能举个例子说明Python如何在没有框架的情况下使用CGI接口吗? - Carson Myers
有多个接口可供选择。您可以使用FastCGI和WSGI,甚至是像PHP一样的Apache模块mod_python。 - Ikke
2
mod_python与mod_php不同,除了将解释器嵌入httpd之外。mod_python不是用于通过httpd运行Python应用程序,而是使用Python代码扩展httpd。这种区别可能看起来微不足道,但非常重要。 - Ignacio Vazquez-Abrams

2

2

Python有许多Web框架,例如Django、werkzeug等。如果你想更加接近底层,可以研究一下WSGI


1

PHP并没有错,只是它不是Python。所以它不具有Python的特性!

如果你经常在Python世界和PHP世界之间穿梭(如WordPress、Drupal或其他PHP框架),你就会感受到我的痛苦,因为无法轻松地使用大量本机Python库,例如SQLAlchemy、机器学习、深度学习(如TensorFlow)等。

诸如WordPress之类的PHP框架提供了xml-rpc、wp-api、wp-cli和其他API来与Python和其他语言进行交互。然而,为这些API准备Python程序,并让PHP与API接口相连,在CPU和内存方面对API客户端和Web服务器来说是代价高昂的,仅仅为了打包、传输和解包API。这在API的两端都很难调试,并且不可扩展。因此,企业、Web或大数据应用程序不能依赖这些API进行高速和高容量的Web应用程序和大规模数据集。

因此,pyx.php来拯救PHP-to-Python程序员!(我写了这个。)

为什么要从PHP转换到Python?

如果你正在问这个问题,那么你可能不应该使用pyx.phppyx.php是一个Cython编译模块,你可以将其中99%的常见PHP源代码转换或翻译成纯Python。换句话说,它是一个在Cython中实现的PHP到Python语法仿真库。
转换后的Python代码只需要一个Python 3.x解释器、pyx存储库中的模块和一些标准Python库,根本不需要PHP解释器。
如果我们已经使用pyx.php将大多数WordPress核心和其他脚本从PHP转换为Python,那么你几乎可以将任何PHP代码转换为Python。
使用编译后的Cython运行从PHP翻译成Python的Python代码,可能比在同一台计算机上运行原始PHP代码更快。

安装

从浏览器或Linux shell下载:

$ wget https://wordpy.com/pyx/pyx.tgz
$ tar xvfpz pyx.tgz

另外,您可以:
$ git clone https://github.com/wordpy/pyx/

目前,pyx.php 仅适用于运行在 64 位 Linux 上的 Python 3.x。当有许多请求时,可以编译 Python 2.x、Mac 或其他平台。

快速入门

$ python # 或 ipython

>>> import pyx.php as Php; array = Php.array
>>> arr1 = array( (0,'1-0'),('a','1-a'),('b','1-b'),)
>>> arr2 = array( (0,'2-0'),(  1,'2-1'),('b','2-b'),('c','2-c'),)
>>> arr1 + arr2   # same as: Php.array_plus(arr1, arr2), see below
>>> Php.array_merge(arr1, arr2)

更多内容请参见https://wordpy.com/pyx/php/


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接