我有一个功能齐全的Python项目,已经通过终端直接测试。
但是,当我搜索如何将Python代码与JavaScript包装器集成时,我发现开源的API很少
http://www.brython.info/
http://www.skulpt.org/
http://pypyjs.org/
http://transcrypt.org/
http://stromberg.dnsalias.org/~strombrg/pybrowser/python-browser.html我使用过brython &能够运行几个基本的python代码
但是我的python项目包含一些库的导入语句,我已经使用以下命令直接安装到操作系统中
apt-get install python-opencv
apt-get install python-numpy
apt-get install python-skimage
apt-get install cython
pip install --user imutils
pip install --user scikit-image和项目包含导入语句,如下所示
import imutils
from skimage.filter import threshold_adaptive
import numpy as np
import argparse
import cv2我的目标是能够在Cordova项目上使用JavaScript包装器运行我的python代码,但由于这些库在默认情况下不可用,我尝试下载它们并通过本地路径导入,但后来我开始遇到许多导入错误& brython抛出的控制台错误是无法理解的。我正在尝试建立图像处理软件使用Python运行在Cordova Android和iOS上。
任何帮助都将不胜感激。提前感谢
发布于 2017-02-14 02:11:04
Brython是Python代码的转译器-
虽然它与Python3.5实现很好地兼容,但它绝不能运行本机代码。也就是说:使用原生代码的项目,比如openCV等,不能在Brython上运行--因为它不会将原生x86二进制文件“转换”成兼容的javascript对象,就像它对Python源代码所做的那样。
"skulpt“等其他方法的工作方式各不相同:它们将Python运行时本身的C代码编译成javascript -如果它们可以选择将二进制Python模块与Python运行时一起编译,就可以让它们工作。(我不熟悉Skulpt或其他客户端Python方法,以了解这是否可能)。
但是,即使它可以工作,openCV也充分利用了现代GPU的优势,包括指令单指令多路存储器,甚至可能使用图形处理器。所有这些都会在Javascript中被模拟(如果它能工作的话),带来3到4个数量级的性能损失-更不用说文件I/O的完全修改的条件了(如:不存在-如果你调用的任何代码都没有任何文件I/O副作用,你可以使用HTTP请求和HTML本地存储)。
在浏览器上运行本机代码(nacl )和其他方法方面有一些努力,但我不知道这些方法的状态,或者使用浏览器上的cPython运行时的这些方法。
那么什么是可能的呢?
在服务器端编写图像处理代码,并构建一个后端,允许您从Brython端的代码调用服务器上的RPC函数。
您只需使用常见的Python框架(如Flask或Pyramid )在HTTP视图中公开所需的openCV功能-使用Brython设置代码在浏览器和此服务器之间传输图像数据和操作元数据将不是一件困难的事情。
另一个附注:
Brython不允许您导入已安装在系统上的任意文件-虽然它可能适用于任何不执行I/O的纯Python3代码,但这些文件必须放在特定的路径中,这些路径通过HTTP提供,以便Brython的导入机制可以获取它们
https://stackoverflow.com/questions/42204667
复制相似问题