xin / process
基于 symfony/process 实现的 Process App Work 处理器,可以让您的应用程序更便捷的集成第三方外部程序。
v1.0.0
2024-12-16 02:01 UTC
Requires
- php: >=7.1.9
- symfony/console: ^6.4
- symfony/process: ^5.0
- xin/capsule: ^1.0
- xin/support: ^1.0
README
介绍
基于 symfony/process 实现的 Process App Work 处理器,可以让您的应用程序更便捷的集成第三方外部程序。
- 集成Conda环境支持,可以更自由的切换不通Conda Env Python环境。
安装教程
composer require xin/process
使用说明
基本用法
<?php
use Symfony\Component\Process\Exception\ProcessFailedException;
use Xin\Process\Python\Python;
require_once './vendor/autoload.php';
$python = Python::fromShellCommandline('-i');
try {
$python->mustRun();
} catch (ProcessFailedException $e) {
var_dump($e->getMessage(), $e->getProcess()->getErrorOutput());
}
使用Conda切换环境
<?php
use Symfony\Component\Process\Exception\ProcessFailedException;
use Xin\Process\Python\Python;
require_once './vendor/autoload.php';
$python = Python::fromShellCommandline('-i');
try {
$python->useCondaEnv('test')->setTty(true)->mustRun();
} catch (ProcessFailedException $e) {
var_dump($e->getMessage(), $e->getProcess()->getErrorOutput());
}
Conda使用
<?php
use Symfony\Component\Process\Exception\ProcessFailedException;
use Xin\Process\Python\Conda;
require_once './vendor/autoload.php';
$conda = new Conda([]);
// 创建环境
var_dump($conda->create('test2'));
// 环境列表
var_dump($conda->envs());
// 移除环境
var_dump($conda->remove('test2'));
集成第三方外部程序使用
<?php
use Symfony\Component\Process\Exception\ProcessFailedException;
use Xin\Process\Python\Conda;
require_once './vendor/autoload.php';
class DemoAppWork extends PythonAppWork
{
// 获取第三方应用程序的工作目录
protected function getWorkDirectory(bool $valid = false)
{
return __DIR__;
}
// 定义第三方应用的能力
public function ls($fail = false)
{
return $fail ? $this->processRunOrFail('ls')->getOutput() : $this->processRun('ls')->getOutput();
}
// 返回第三方应用使用的Conda环境
protected function getDefaultCondaEnv()
{
return "demo";
}
}
try {
$app = new DefaultAppWork([]);
var_dump($app->ls(true));
} catch (ProcessFailedException $e) {
var_dump($e->getProcess()->getErrorOutput());
}