【胶水语言】 Python 的混合编程

Python运行 JavaScript, C/C++, PHP

JavaScript

这里介绍一个自带的 Python 库:execjs
Python 可以通过 execjs 库运行 js 代码;直接上代码:

JavaScript 代码:

function sayHello(){
	return "Hello JavaScript";
}

Python 代码通过 JS 的返回值进行交互操作

Python 运行 JavaScript 代码:

import execjs

jscode = """function sayHello(){
	return "Hello JavaScript";
}"""

sign = execjs.compile(jscode)
print(sign.call('sayHello'))

print("Hello Python")

execjs.compile(jscode) 对于 js 的代码进行编译;将编译好的结果赋值给变量 sign , 变量使用 call 方法调用 js 函数执行;

C/C++

这里介绍一个自带的 Python 库:ctypes
Python 可以通过 ctypes 库运行 C/C++ 编译的 .dll 文件;直接上代码:

C/C++ 代码:
hello.c 代码

#include <stdio.h>

_declspec(dllexport) int sum()
{
    printf("Hello World !\n");
    printf("---------我是 C 语言:-----------\n");
    return 0;
}

hello.h 代码:

#pragma once
_declspec(dllexport) int sum(int a, int b)

Python 代码

from ctypes import *

great_module = cdll.LoadLibrary("./Project3.dll")		# 路径需要准确
print("---------我是python语言:-----------\n")

Python 代码运行 C++ 时,在生成 .dll 文件会出现意外,下面附带 .dll 文件的生成办法

DLL 文件生成流程

第一步 新建空项目:
在这里插入图片描述
选择 项目类型
在这里插入图片描述
在这里插入图片描述
第二步 添加源文件:
在这里插入图片描述
第三步 添加头文件:
在这里插入图片描述
最后一步 编译运行 生成需要的 .dll 文件:
在这里插入图片描述

PHP

这个语言 就需要下载 PHP
通过 Python 运行 PHP 需要使用:subprocess
PHP 安装完成后需要 使用 PHP 的绝对路径,接下来上代码,看效果:

PHP 代码:

<?php
	//测试
	echo '---------我是 PHP 语言:-----------\n';
?>

Python 代码:

import subprocess


def run_cmd(cmd):
    p = subprocess.Popen(cmd, shell=True, stdout=subprocess.PIPE)
    stdout, stderr = p.communicate()
    if stdout:
        stdout = stdout.rstrip()
    if stderr:
        stderr = stderr.rstrip()
    return (stdout, stderr, p.returncode)


a, b, c = run_cmd('D:\\Configuration_file\\PHP\\php8\\php.exe hello.php ')
print("PHP:", a.decode('utf-8'))
print(b)
print(c)
# print(a.decode('gbk'))
print("---------我是python语言:-----------")

PHP 需要安装配置 ,接下来是 PHP 的安装流程

PHP 安装流程

配置 环境 https://cloud.tencent.com/developer/article/1705262
官网地址: https://windows.php.net/download
下载 VS16 x64 Thread Safe 压缩包 :
在这里插入图片描述
压缩包解压到新建的文件夹内
Apache安装配置可参考这里:传送门
下载 Apache :https://www.apachehaus.com/cgi-bin/download.plx
在这里插入图片描述
在这里插入图片描述
下载完成后解压
找到 Apache24\conf 路径下的 httpd.conf 文件 修改 Define SRVROOT “自己的路径\Apache24” 绝对路径
使用 php 需要再 添加一段内容:

#加载PHP
LoadModule php_module "D:\Configuration_file\PHP\php8\php8apache2_4.dll"

#将PHP配置文件加载到Apache配置文件中,共同生效
PHPIniDir 'D:/Configuration_file/PHP/php8'

#配置Apache分配工作给PHP模块,把PHP代码交给PHP处理
#即.php后缀名的文件
AddType application/x-httpd-php .php

注意 :
PHP 8 版本
配置时经常报错 找不到结果
php_module
原因如下:
# PHP8
AddHandler application/x-httpd-php .php
AddType application/x-httpd-php .php
LoadModule php_module "F:\wamp\php8.0.1\php8apache2_4.dll"
PHPIniDir "F:\wamp\php8.0.1"


#php7.4
# AddHandler application/x-httpd-php .php
# LoadModule php7_module  "F:\wamp\php7.4.13\php7apache2_4.dll"
# AddType  Application/x-httpd-php  .php
# PHPIniDir  "F:\wamp\php7.4.13"

#php5.6.40
# AddHandler application/x-httpd-php .php
# LoadModule php5_module  "F:\wamp\php5.6.40\php5apache2_4.dll"
# AddType  Application/x-httpd-php  .php
# PHPIniDir  "F:\wamp\php5.6.40"

#php7.0.9
# AddHandler application/x-httpd-php .php
#  LoadModule php7_module  "F:\wamp\php7.0.9\php7apache2_4.dll"
#  AddType  Application/x-httpd-php  .php
#  PHPIniDir  "F:\wamp\php7.0.9"

#php7.2.33
# AddHandler application/x-httpd-php .php
# LoadModule php7_module  "F:\wamp\php7.2.33\php7apache2_4.dll"
# AddType  Application/x-httpd-php  .php
# PHPIniDir  "F:\wamp\php7.2.33"

在这里插入图片描述
使用 CMD 打开路径: D:\Configuration_file\PHP\Apache24\bin 执行 httpd -t 测试配置文件是否合法
成功后显示:
在这里插入图片描述
安装 Apache 服务
使用 CMD 命令 :httpd -k install -n Apache2.4 -n 后面表示自定义访问名称
启动服务 :httpd -k start
暂停服务 :httpd -k stop

测试 服务 是否正常:http://localhost/
正常:
在这里插入图片描述
以上步骤都配置没有问题后
使用 :httpd -M 重新加载 PHP 模块
成功后 :
在这里插入图片描述
最后 测试 php 环境是否正常使用
hello.php

<?php
	//测试
	echo 'hello world';
?>

// 测试地址 : http://localhost/hello.php

以上便是我在使用 Python 混合编程时遇到的情况以及处理办法,结果都已成功测试运行,如果有什么异常可以交流学习一下;
如果在混合编程使用 C语言获取其他语言时,发现结果输出乱码时,注意PyCharm 的编码格式,是否与 其他语言相同。

最后 如果有 帮忙 麻烦大家来个一键三连 欢迎大家随时交流学习,共同进步

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

渊季

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值