Jeff
Jeff

Reputation: 12418

Chrome extension in python?

I would like to create a google chrome extension. Specifically, I'd like to make a packaged app, but not a hosted app. Am I correct in thinking this limits me to JavaScript (and HTML/CSS)?

My problem is that I need to do some complex math (singular value decomposition, factor analysis) and I don't want to write algorithms for this in javascript. Python already has libraries for the functions I need (SciPy), but I can't find any indication that I can make a Chrome extension using python.

Is this correct? Do I have any other options?

Upvotes: 56

Views: 90678

Answers (6)

Rajah Iyer
Rajah Iyer

Reputation: 1

This is a way to achieve this using C# MVC .NET and the Python compiler. The versions are really case specific, such as the infrastructure you are making use of.

Within a controller of choice in your Web App:

one can use :

using System.Diagnostics;


ProcessStartInfo start = new ProcessStartInfo();
            Console.WriteLine("Starting Python     Engine...");
            start.FileName =     @"~\Python\Python39\python.exe";// you will need to have a copy in an accessible folder.
             start.Arguments = string.Format("{0}",     @"~/PythonScripts/PythonScriptName.py");
            start.UseShellExecute = false;
            start.RedirectStandardOutput = true;
            Console.WriteLine("Starting Process..." +     DateTime.Now.ToString());

Results can be retrieved as for instance:

using (Process process = Process.Start(start)) {
    using (StreamReader reader =     process.StandardOutput)
    {
        string result = reader.ReadToEnd();
        Console.Write(result);
    } } Console.WriteLine("Process Succeeded..." + DateTime.Now.ToString());

    

The results can then be populated within a model and sent to your page on Load/Post.

You can see examples of how I make use of this to evaluate z-spreads with a web front-end using python in this manner.

enter link description here

Upvotes: 0

chx
chx

Reputation: 11760

There is no Python built into Chrome but I am wondering whether pyjs can help you.

Upvotes: 23

Maksym  Rudnyi
Maksym Rudnyi

Reputation: 483

You can make AJAX calls to a separate service with Python from your Google Chrome Extension. All complex logic will be moved to separate microservice. There is a video how to create Chrome extension, maybe you will find something there - https://youtu.be/l17LDVytSE8

Upvotes: 7

Winand
Winand

Reputation: 2433

I'm writing an extension with Flexx PScript and like it very much. Here's an overview of different tools compared to PScript (do not trust this article, it's written by flexx developers:).

Upvotes: 2

zxvn
zxvn

Reputation: 295

You can make a standard Google Chrome extension with Python (server-less) https://pythonspot.com/en/create-a-chrome-plugin-with-python/

The idea is to compile Python to Javascript (technically a JS pre-compiler) using Rapydscript. Then include the generated script in the Chrome extension. The site above has a zip file with all the stuff inside.

I recommend using Rapydscript instead of Pyjamas. A Python script compiled with Rapydscript works like any other Chrome plugin.

Pyjamas scripts does not work well with Google Chrome (needs a special parameter when Chrome starts or server).

Upvotes: 17

KFL
KFL

Reputation: 17850

Although you mentioned you don't want it to be a hosted app, but this is one typical scenario where a hosted app can do.

SciPy is not a package that is easy to deploy. Even if you are writing a installed application based on SciPy, it requires some effort to deploy this dependency. A web application can help here where you put most of the hard-to-deploy dependencies on the server side (which is a one-off thing). And the client side can be really light.

Upvotes: 7

Related Questions