SlideShare uma empresa Scribd logo
Tutorial [Introdutório]: Criando
 Pluging IronPython para c#




     Por: Eduardo dos Santos Pereira
            Dr. em Astrofísica
       pereira.somoza@gmail.com
Tutorial [Introdutório]: Criando
     Pluging IronPython para c#
   Instituto Nacional de Pesquisas Espaciais/DEA


Apresentado uma breve introdução de como
rodar um script IronPython dentro do C#, isso
permitiria a criação de plugins em IronPython
para projetos que originalmente forma escritos
em c#.
Materiais

   Nesse Tutorial é usado o IronPython 2.7, sendo
    que esse pode ser baixado no site
    www.ironpyton.net
   .Net 4.0
   Também será usado o Visual Studio 2010
    Express. É necessário o C# Visual Studio 2010
    ou superior pelo fato de que as versões
    anteriores não são compatíveis com o .Net 4.0
Passo 1



   O primeiro passo será o de criar uma nova
    solução no Visual Studio. Aqui será criado um
    novo aplicativo do Windows, ao estilo
    formulário.
Passo 1: Criação de Uma Nova
           Solução
Passo 2: Abrindo o Formulário

   Agora será adicionado um Botão no
    Formulário.
   Após a adição do botão, com um duplo clique
    no formulário será adicionado ao projeto o
    arquivo Form1.cs
   Nesse arquivo será acrescentada a chamada
    do script
Abrindo o Formulário
Abrindo Formulário
Criar Botão para Chamar o Script
Passo 3: Adicionando referências

   Agora é preciso adicionar as referências (.dll)
    do IronPython, essas normalmente se
    encontram em c:/Arquivos e
    Programas/IronPython 2.7/
   As dll's necessárias são:
       IronPython.dll
       IronPython.Modules.dll
       Microsoft.Scripting.dll
       Microsoft.Dynamic.dll
       Microsoft.Scripting.Metadata.dll
Passo 3: Adicionando referências

   Essas referencias precisam ser colocadas no
    diretório em que se encontra o arquivo
    executável.
   Isso irá permiter que o programa gerado rode
    em outra máquina que não possua o
    IronPython instalado
   Nas Próximas figuras são mostrados esses
    passos.
Adicionar Referências
Adicionando Referências
Definindo para que as Referências Sejam
Copiadas para o Diretório do Executável Final
Fazer com que as Referências do IronPython
  sejam salvas no Diretório do Executável
O código para a Chamada
Passo 4: Programando

   Agora serão acrescentadas as chamadas das
    referências e criação da rotina de execução do
    script.




   O código final ficará como segue:
Passo 4: Programando
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

/*
 * Extras System modules necessaries to execute
 * the python script.
 */

using System.Collections;
using System.IO;
using System.Reflection;
using System.Threading;

/*
 * Iron Python Modules and Microsoft Script engine
 */
using IronPython;
using IronPython.Hosting;
using IronPython.Runtime;
using IronPython.Runtime.Exceptions;
using Microsoft.Scripting;
using Microsoft.Scripting.Hosting;
Passo 4: Programando
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
                                                     Gerado pelo Visual Studio
using System.Linq;
using System.Text;
using System.Windows.Forms;

/*
 * Extras System modules necessaries to execute
 * the python script.
 */

using System.Collections;
using System.IO;
using System.Reflection;
using System.Threading;

/*
 * Iron Python Modules and Microsoft Script engine
 */
using IronPython;
using IronPython.Hosting;
using IronPython.Runtime;
using IronPython.Runtime.Exceptions;
using Microsoft.Scripting;
using Microsoft.Scripting.Hosting;
Passo 4: Programando
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

/*
 * Extras System modules necessaries to execute      Usando Referências
 * the python script.                                   Importantes
 */
                                                        Do Sistema.
using System.Collections;
using System.IO;
using System.Reflection;
using System.Threading;

/*
 * Iron Python Modules and Microsoft Script engine
 */
using IronPython;
using IronPython.Hosting;
using IronPython.Runtime;
using IronPython.Runtime.Exceptions;
using Microsoft.Scripting;
using Microsoft.Scripting.Hosting;
Passo 4: Programando
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

/*
 * Extras System modules necessaries to execute
 * the python script.
 */

using System.Collections;
using System.IO;
                                                      Chamando O IronPython
using System.Reflection;                             E o Microsoft.Scripting para
using System.Threading;                                       Trabalhar
/*
 * Iron Python Modules and Microsoft Script engine
 */
using IronPython;
using IronPython.Hosting;
using IronPython.Runtime;
using IronPython.Runtime.Exceptions;
using Microsoft.Scripting;
using Microsoft.Scripting.Hosting;
Passo 4: Programando
namespace WindowsFormsApplication1
{
  public partial class Form1 : Form
  {
    public Form1()
    {
       InitializeComponent();
    }

    private void button1_Click(object sender, EventArgs e)
    {
       /*
        * This button will start the python script into the new thread
        */
       Thread myThread = new Thread( new ThreadStart(startPy));
       myThread.Start();
    }
    public static void startPy()
    { /*
        * This function is use to set de local directory that the
        * Python script program will be executed
        */
       string filename = "/Scripts/Program.py";
       string path = Assembly.GetExecutingAssembly().Location;
       string rootDir = Directory.GetParent(path).FullName;

        RunPythonFile(rootDir, filename);
    }
Passo 4: Programando
namespace WindowsFormsApplication1
{
  public partial class Form1 : Form
  {                                                                       Código Gerado
    public Form1()                                                       Pelo Visual Studio
    {
       InitializeComponent();
    }

    private void button1_Click(object sender, EventArgs e)
    {
       /*
        * This button will start the python script into the new thread
        */
       Thread myThread = new Thread( new ThreadStart(startPy));
       myThread.Start();
    }
    public static void startPy()
    { /*
        * This function is use to set de local directory that the
        * Python script program will be executed
        */
       string filename = "/Scripts/Program.py";
       string path = Assembly.GetExecutingAssembly().Location;
       string rootDir = Directory.GetParent(path).FullName;

        RunPythonFile(rootDir, filename);
    }
Passo 4: Programando
namespace WindowsFormsApplication1
{
  public partial class Form1 : Form                                 A Função que Chama
  {
    public Form1()
                                                                   O Script será Executada
    {                                                              Como uma nova Thread
       InitializeComponent();
    }

    private void button1_Click(object sender, EventArgs e)
    {
       /*
        * This button will start the python script into the new thread
        */
       Thread myThread = new Thread( new ThreadStart(startPy));
       myThread.Start();
    }
    public static void startPy()
    { /*
        * This function is use to set de local directory that the
        * Python script program will be executed
        */
       string filename = "/Scripts/Program.py";
       string path = Assembly.GetExecutingAssembly().Location;
       string rootDir = Directory.GetParent(path).FullName;

        RunPythonFile(rootDir, filename);
    }
Passo 4: Programando
namespace WindowsFormsApplication1
{
  public partial class Form1 : Form                              Aqui são definidas as variáveis
  {                                                                 filename, que informa o
    public Form1()                                                A pastas e o script que será
    {
       InitializeComponent();                                              Executado.
    }                                                            Além disso é definido o diretório
                                                                    Onde está o executável.
    private void button1_Click(object sender, EventArgs e)
    {
       /*
        * This button will start the python script into the new thread
        */
       Thread myThread = new Thread( new ThreadStart(startPy));
       myThread.Start();
    }
    public static void startPy()
    { /*
        * This function is use to set de local directory that the
        * Python script program will be executed
        */
       string filename = "/Scripts/Program.py";
       string path = Assembly.GetExecutingAssembly().Location;
       string rootDir = Directory.GetParent(path).FullName;

        RunPythonFile(rootDir, filename);
    }
Passo 4: Programando
public static int RunPythonFile(string rootDir, string filename)
     {
        /*
         * Create a new engine object
         */
        ScriptEngine engine = Python.CreateEngine();

            /*
             * New source script
             */
            ScriptSource source;
            source = engine.CreateScriptSourceFromFile(rootDir + filename);

            /*
             * Create a new scope object
             */

            ScriptScope scope = engine.CreateScope();

            /*
             * Executin the script
             */
            int result = source.ExecuteProgram();
            return result;
        }

    }
}
Passo 4: Programando
public static int RunPythonFile(string rootDir, string filename)
     {
        /*
         * Create a new engine object                                   Criando o Objeto para
         */                                                             A execução do Script
        ScriptEngine engine = Python.CreateEngine();

            /*
             * New source script
             */
            ScriptSource source;
            source = engine.CreateScriptSourceFromFile(rootDir + filename);

            /*
             * Create a new scope object
             */

            ScriptScope scope = engine.CreateScope();

            /*
             * Executin the script
             */
            int result = source.ExecuteProgram();
            return result;
        }

    }
}
Passo 4: Programando
public static int RunPythonFile(string rootDir, string filename)
     {
        /*                                                                    Definindo qual Script
         * Create a new engine object                                           Será Executado
         */
        ScriptEngine engine = Python.CreateEngine();

            /*
             * New source script
             */
            ScriptSource source;
            source = engine.CreateScriptSourceFromFile(rootDir + filename);

            /*
             * Create a new scope object
             */

            ScriptScope scope = engine.CreateScope();

            /*
             * Executin the script
             */
            int result = source.ExecuteProgram();
            return result;
        }

    }
}
Passo 4: Programando
public static int RunPythonFile(string rootDir, string filename)
     {
        /*
         * Create a new engine object
         */
        ScriptEngine engine = Python.CreateEngine();
                                                                               Criando um Novo
            /*                                                                Escopo de execução
             * New source script
             */
            ScriptSource source;
            source = engine.CreateScriptSourceFromFile(rootDir + filename);

            /*
             * Create a new scope object
             */

            ScriptScope scope = engine.CreateScope();

            /*
             * Executin the script
             */
            int result = source.ExecuteProgram();
            return result;
        }

    }
}
Passo 4: Programando
public static int RunPythonFile(string rootDir, string filename)
     {
        /*
         * Create a new engine object
         */
        ScriptEngine engine = Python.CreateEngine();

            /*
             * New source script
             */
            ScriptSource source;
            source = engine.CreateScriptSourceFromFile(rootDir + filename);

            /*                                                                Colocando o Script para
             * Create a new scope object                                              Rodar
             */

            ScriptScope scope = engine.CreateScope();

            /*
             * Executin the script
             */
            int result = source.ExecuteProgram();
            return result;
        }

    }
}
Passo 5: Criar a Pastas que
    conterá os scripts
Passo 6: Criando o Script
Passo 6: Criando o Script

   O script em IronPython será algo bem simples,
    ele irá apenas abrir um novo formulário em
    uma nova janela.
   Por gerar uma nova janela, a opção de criar
    uma nova thread evita que ocorra um erro de
    gerenciamento, mas mais importante é que o
    novo script acaba sendo executado como uma
    função independente, mas que sua
    inicialização e finalização está ligada ao
    aplicativo original em C#
Passo 6: Criando o Script
import clr
import sys
import time
clr.AddReference("System")
clr.AddReference("System.Windows.Forms")
clr.AddReference("System.Drawing")
clr.AddReference('IronPython')


from System.Windows.Forms import Application, Form, Button,
Panel
from System.Drawing import Size

from IronPython.Compiler import CallTarget0

class myForm(Form):

  def __init__(self):
    self.Text = 'MyApp'
    self.CenterToScreen()
    self.Size = Size(590,550)

if __name__ == "__main__":
    myapp = myForm()
Passo 6: Criando o Script
import clr
import sys
import time                                           Adicionando as Referências
clr.AddReference("System")
clr.AddReference("System.Windows.Forms")
clr.AddReference("System.Drawing")
clr.AddReference('IronPython')


from System.Windows.Forms import Application, Form, Button,
Panel
from System.Drawing import Size

from IronPython.Compiler import CallTarget0

class myForm(Form):

  def __init__(self):
    self.Text = 'MyApp'
    self.CenterToScreen()
    self.Size = Size(590,550)

if __name__ == "__main__":
    myapp = myForm()
Passo 6: Criando o Script
import clr
import sys                                              Chamda dos Módulos
import time                                                 Necessário
clr.AddReference("System")
clr.AddReference("System.Windows.Forms")
clr.AddReference("System.Drawing")
clr.AddReference('IronPython')


from System.Windows.Forms import Application, Form, Button,
Panel
from System.Drawing import Size

from IronPython.Compiler import CallTarget0

class myForm(Form):

  def __init__(self):
    self.Text = 'MyApp'
    self.CenterToScreen()
    self.Size = Size(590,550)

if __name__ == "__main__":
    myapp = myForm()
Passo 6: Criando o Script
import clr
import sys
import time
clr.AddReference("System")
clr.AddReference("System.Windows.Forms")
clr.AddReference("System.Drawing")
clr.AddReference('IronPython')

                                                   Criando a Classe Formulário
from System.Windows.Forms import Application, Form, Button,
Panel
from System.Drawing import Size

from IronPython.Compiler import CallTarget0

class myForm(Form):

  def __init__(self):
    self.Text = 'MyApp'
    self.CenterToScreen()
    self.Size = Size(590,550)

if __name__ == "__main__":
    myapp = myForm()
Passo 6: Criando o Script
import clr
import sys
import time
clr.AddReference("System")
clr.AddReference("System.Windows.Forms")
clr.AddReference("System.Drawing")
clr.AddReference('IronPython')


from System.Windows.Forms import Application, Form, Button,
Panel
from System.Drawing import Size

from IronPython.Compiler import CallTarget0

class myForm(Form):                      Executando o Programa
  def __init__(self):
    self.Text = 'MyApp'
    self.CenterToScreen()
    self.Size = Size(590,550)

if __name__ == "__main__":
    myapp = myForm()
Adicionado o Script,
Lembrar de mudar para Guardar Script no
   diretório onde está o executável




    Lembre-se de definir no projeto que o
     Script deverá ser copiado para a pasta
     onde se encontra o executável no
     momento em que será gerada a solução
Adicionado o Script,
Lembrar de mudar para Guardar Script no
   diretório onde está o executável
Rodando no Modo Debug
   FIM

Mais conteúdo relacionado

Mais procurados

POO - 22 - Tratamento de Exceções em Java
POO - 22 - Tratamento de Exceções em JavaPOO - 22 - Tratamento de Exceções em Java
POO - 22 - Tratamento de Exceções em Java
Ludimila Monjardim Casagrande
 
Test Driven Development With Python
Test Driven Development With PythonTest Driven Development With Python
Test Driven Development With Python
Siddhi
 
Structs em C
Structs em CStructs em C
Structs em C
Pablo Silva
 
ネットワークエンジニアのための Puppet / Chef
ネットワークエンジニアのための Puppet / Chefネットワークエンジニアのための Puppet / Chef
ネットワークエンジニアのための Puppet / Chef
npsg
 
Threads V4
Threads  V4Threads  V4
Threads V4
Sunil OS
 
Gohan
GohanGohan
Gohan
Nachi Ueno
 
Acessando o MySql com o Python
Acessando o MySql com o PythonAcessando o MySql com o Python
Acessando o MySql com o Python
antonio sérgio nogueira
 
Lista de exercícios em Bash (resolvida)
Lista de exercícios em Bash (resolvida) Lista de exercícios em Bash (resolvida)
Lista de exercícios em Bash (resolvida)
Marcelo Barros de Almeida
 
Arquitetura 6 exercícios
Arquitetura 6   exercíciosArquitetura 6   exercícios
Arquitetura 6 exercícios
Paulo Fonseca
 
Perf File Format
Perf File FormatPerf File Format
Perf File Format
Wang Hsiangkai
 
Automação e virtualização de serviços
Automação e virtualização de serviçosAutomação e virtualização de serviços
Automação e virtualização de serviços
Elias Nogueira
 
Writing External Rsyslog Plugins
Writing External Rsyslog PluginsWriting External Rsyslog Plugins
Writing External Rsyslog Plugins
Rainer Gerhards
 
Introduction to Unit Testing with PHPUnit
Introduction to Unit Testing with PHPUnitIntroduction to Unit Testing with PHPUnit
Introduction to Unit Testing with PHPUnit
Michelangelo van Dam
 
Laziness, trampolines, monoids and other functional amenities: this is not yo...
Laziness, trampolines, monoids and other functional amenities: this is not yo...Laziness, trampolines, monoids and other functional amenities: this is not yo...
Laziness, trampolines, monoids and other functional amenities: this is not yo...
Mario Fusco
 
An Introduction to JUnit 5 and how to use it with Spring boot tests and Mockito
An Introduction to JUnit 5 and how to use it with Spring boot tests and MockitoAn Introduction to JUnit 5 and how to use it with Spring boot tests and Mockito
An Introduction to JUnit 5 and how to use it with Spring boot tests and Mockito
shaunthomas999
 
4. metodos de contrucao de algoritmo
4. metodos de contrucao de algoritmo4. metodos de contrucao de algoritmo
4. metodos de contrucao de algoritmo
Eugenio Caetano
 
Linguagem C 01 Primeiros Passos
Linguagem C 01 Primeiros PassosLinguagem C 01 Primeiros Passos
Linguagem C 01 Primeiros Passos
Regis Magalhães
 
Java: Excecoes e Tratamento de Erros
Java: Excecoes e Tratamento de ErrosJava: Excecoes e Tratamento de Erros
Java: Excecoes e Tratamento de Erros
Arthur Emanuel
 
Managing user's data with Spring Session
Managing user's data with Spring SessionManaging user's data with Spring Session
Managing user's data with Spring Session
David Gómez García
 
Phpunit testing
Phpunit testingPhpunit testing
Phpunit testing
Nikunj Bhatnagar
 

Mais procurados (20)

POO - 22 - Tratamento de Exceções em Java
POO - 22 - Tratamento de Exceções em JavaPOO - 22 - Tratamento de Exceções em Java
POO - 22 - Tratamento de Exceções em Java
 
Test Driven Development With Python
Test Driven Development With PythonTest Driven Development With Python
Test Driven Development With Python
 
Structs em C
Structs em CStructs em C
Structs em C
 
ネットワークエンジニアのための Puppet / Chef
ネットワークエンジニアのための Puppet / Chefネットワークエンジニアのための Puppet / Chef
ネットワークエンジニアのための Puppet / Chef
 
Threads V4
Threads  V4Threads  V4
Threads V4
 
Gohan
GohanGohan
Gohan
 
Acessando o MySql com o Python
Acessando o MySql com o PythonAcessando o MySql com o Python
Acessando o MySql com o Python
 
Lista de exercícios em Bash (resolvida)
Lista de exercícios em Bash (resolvida) Lista de exercícios em Bash (resolvida)
Lista de exercícios em Bash (resolvida)
 
Arquitetura 6 exercícios
Arquitetura 6   exercíciosArquitetura 6   exercícios
Arquitetura 6 exercícios
 
Perf File Format
Perf File FormatPerf File Format
Perf File Format
 
Automação e virtualização de serviços
Automação e virtualização de serviçosAutomação e virtualização de serviços
Automação e virtualização de serviços
 
Writing External Rsyslog Plugins
Writing External Rsyslog PluginsWriting External Rsyslog Plugins
Writing External Rsyslog Plugins
 
Introduction to Unit Testing with PHPUnit
Introduction to Unit Testing with PHPUnitIntroduction to Unit Testing with PHPUnit
Introduction to Unit Testing with PHPUnit
 
Laziness, trampolines, monoids and other functional amenities: this is not yo...
Laziness, trampolines, monoids and other functional amenities: this is not yo...Laziness, trampolines, monoids and other functional amenities: this is not yo...
Laziness, trampolines, monoids and other functional amenities: this is not yo...
 
An Introduction to JUnit 5 and how to use it with Spring boot tests and Mockito
An Introduction to JUnit 5 and how to use it with Spring boot tests and MockitoAn Introduction to JUnit 5 and how to use it with Spring boot tests and Mockito
An Introduction to JUnit 5 and how to use it with Spring boot tests and Mockito
 
4. metodos de contrucao de algoritmo
4. metodos de contrucao de algoritmo4. metodos de contrucao de algoritmo
4. metodos de contrucao de algoritmo
 
Linguagem C 01 Primeiros Passos
Linguagem C 01 Primeiros PassosLinguagem C 01 Primeiros Passos
Linguagem C 01 Primeiros Passos
 
Java: Excecoes e Tratamento de Erros
Java: Excecoes e Tratamento de ErrosJava: Excecoes e Tratamento de Erros
Java: Excecoes e Tratamento de Erros
 
Managing user's data with Spring Session
Managing user's data with Spring SessionManaging user's data with Spring Session
Managing user's data with Spring Session
 
Phpunit testing
Phpunit testingPhpunit testing
Phpunit testing
 

Destaque

Integrando C com Python
Integrando C com PythonIntegrando C com Python
Integrando C com Python
gsroma
 
API de análise de sentimentos levando em conta contexto a partir de lógica di...
API de análise de sentimentos levando em conta contexto a partir de lógica di...API de análise de sentimentos levando em conta contexto a partir de lógica di...
API de análise de sentimentos levando em conta contexto a partir de lógica di...
Eduardo S. Pereira
 
Do Cosmos a Terra: Usando Python para desvendar os mistérios do Universo.
Do Cosmos a Terra: Usando Python para desvendar os mistérios do Universo.Do Cosmos a Terra: Usando Python para desvendar os mistérios do Universo.
Do Cosmos a Terra: Usando Python para desvendar os mistérios do Universo.
Eduardo S. Pereira
 
Interfacing C/C++ and Python with SWIG
Interfacing C/C++ and Python with SWIGInterfacing C/C++ and Python with SWIG
Interfacing C/C++ and Python with SWIG
David Beazley (Dabeaz LLC)
 
Generators: The Final Frontier
Generators: The Final FrontierGenerators: The Final Frontier
Generators: The Final Frontier
David Beazley (Dabeaz LLC)
 
Arduino Day 2017 - Python + Arduino
Arduino Day 2017 - Python + ArduinoArduino Day 2017 - Python + Arduino
Arduino Day 2017 - Python + Arduino
Eduardo S. Pereira
 

Destaque (7)

Integrando C com Python
Integrando C com PythonIntegrando C com Python
Integrando C com Python
 
API de análise de sentimentos levando em conta contexto a partir de lógica di...
API de análise de sentimentos levando em conta contexto a partir de lógica di...API de análise de sentimentos levando em conta contexto a partir de lógica di...
API de análise de sentimentos levando em conta contexto a partir de lógica di...
 
Swig Tutorial
Swig TutorialSwig Tutorial
Swig Tutorial
 
Do Cosmos a Terra: Usando Python para desvendar os mistérios do Universo.
Do Cosmos a Terra: Usando Python para desvendar os mistérios do Universo.Do Cosmos a Terra: Usando Python para desvendar os mistérios do Universo.
Do Cosmos a Terra: Usando Python para desvendar os mistérios do Universo.
 
Interfacing C/C++ and Python with SWIG
Interfacing C/C++ and Python with SWIGInterfacing C/C++ and Python with SWIG
Interfacing C/C++ and Python with SWIG
 
Generators: The Final Frontier
Generators: The Final FrontierGenerators: The Final Frontier
Generators: The Final Frontier
 
Arduino Day 2017 - Python + Arduino
Arduino Day 2017 - Python + ArduinoArduino Day 2017 - Python + Arduino
Arduino Day 2017 - Python + Arduino
 

Semelhante a Tutorial Rodando Python no C#

django.pptx
django.pptxdjango.pptx
django.pptx
Vítor Simões
 
Internacionalizacao
InternacionalizacaoInternacionalizacao
Internacionalizacao
Ricardo Ogliari
 
Ecosistema spring a_plataforma_enterprise_jav
Ecosistema spring a_plataforma_enterprise_javEcosistema spring a_plataforma_enterprise_jav
Ecosistema spring a_plataforma_enterprise_jav
Julio Viegas
 
Spring framework 2.5
Spring framework 2.5Spring framework 2.5
Spring framework 2.5
Diego Pacheco
 
PHPSC Conference 2010 - Desenvolvimento de Extensões PECL
PHPSC Conference 2010 - Desenvolvimento de Extensões PECLPHPSC Conference 2010 - Desenvolvimento de Extensões PECL
PHPSC Conference 2010 - Desenvolvimento de Extensões PECL
Erick Belluci Tedeschi
 
Iniciando com django
Iniciando com djangoIniciando com django
Iniciando com django
Marcelo Santos
 
Tutorial poke-tool
Tutorial poke-toolTutorial poke-tool
Tutorial poke-tool
unifesptk
 
Python Interface Gráfica Tkinter
Python Interface Gráfica TkinterPython Interface Gráfica Tkinter
Python Interface Gráfica Tkinter
antonio sérgio nogueira
 
aula5_python.pdf
aula5_python.pdfaula5_python.pdf
aula5_python.pdf
NonatoColaresColares2
 
Introdução ao Zend Framework 2
Introdução ao Zend Framework 2Introdução ao Zend Framework 2
Introdução ao Zend Framework 2
Elton Minetto
 
Técnicas para preparação e desenvolvimento de sites em django
Técnicas para preparação e desenvolvimento de sites em djangoTécnicas para preparação e desenvolvimento de sites em django
Técnicas para preparação e desenvolvimento de sites em django
Mario Chaves
 
Fundamentos de Sockets
Fundamentos de SocketsFundamentos de Sockets
Fundamentos de Sockets
Denis L Presciliano
 
Fundamentos de Sockets
Fundamentos de SocketsFundamentos de Sockets
Fundamentos de Sockets
Denis L Presciliano
 
Artigo distribuidos programação java com rmi e cobra
Artigo distribuidos programação java com rmi e cobraArtigo distribuidos programação java com rmi e cobra
Artigo distribuidos programação java com rmi e cobra
Goncalvinho
 
Demoiselle Behave - Parte 3
Demoiselle Behave - Parte 3Demoiselle Behave - Parte 3
Demoiselle Behave - Parte 3
Vanderson Silva
 
Desenvolvimento de Extensões PECL
Desenvolvimento de Extensões PECLDesenvolvimento de Extensões PECL
Desenvolvimento de Extensões PECL
Erick Belluci Tedeschi
 
Aumente sua produtividade com Spring Boot
Aumente sua produtividade com Spring BootAumente sua produtividade com Spring Boot
Aumente sua produtividade com Spring Boot
Fernando Boaglio
 
Respiração Programada
Respiração ProgramadaRespiração Programada
Respiração Programada
Marcelo Diniz
 
Desenvolvendo uma Aplicação WEB usando o Python e o CherryPy
Desenvolvendo uma Aplicação WEB usando o Python e o CherryPyDesenvolvendo uma Aplicação WEB usando o Python e o CherryPy
Desenvolvendo uma Aplicação WEB usando o Python e o CherryPy
antonio sérgio nogueira
 
Threads
ThreadsThreads

Semelhante a Tutorial Rodando Python no C# (20)

django.pptx
django.pptxdjango.pptx
django.pptx
 
Internacionalizacao
InternacionalizacaoInternacionalizacao
Internacionalizacao
 
Ecosistema spring a_plataforma_enterprise_jav
Ecosistema spring a_plataforma_enterprise_javEcosistema spring a_plataforma_enterprise_jav
Ecosistema spring a_plataforma_enterprise_jav
 
Spring framework 2.5
Spring framework 2.5Spring framework 2.5
Spring framework 2.5
 
PHPSC Conference 2010 - Desenvolvimento de Extensões PECL
PHPSC Conference 2010 - Desenvolvimento de Extensões PECLPHPSC Conference 2010 - Desenvolvimento de Extensões PECL
PHPSC Conference 2010 - Desenvolvimento de Extensões PECL
 
Iniciando com django
Iniciando com djangoIniciando com django
Iniciando com django
 
Tutorial poke-tool
Tutorial poke-toolTutorial poke-tool
Tutorial poke-tool
 
Python Interface Gráfica Tkinter
Python Interface Gráfica TkinterPython Interface Gráfica Tkinter
Python Interface Gráfica Tkinter
 
aula5_python.pdf
aula5_python.pdfaula5_python.pdf
aula5_python.pdf
 
Introdução ao Zend Framework 2
Introdução ao Zend Framework 2Introdução ao Zend Framework 2
Introdução ao Zend Framework 2
 
Técnicas para preparação e desenvolvimento de sites em django
Técnicas para preparação e desenvolvimento de sites em djangoTécnicas para preparação e desenvolvimento de sites em django
Técnicas para preparação e desenvolvimento de sites em django
 
Fundamentos de Sockets
Fundamentos de SocketsFundamentos de Sockets
Fundamentos de Sockets
 
Fundamentos de Sockets
Fundamentos de SocketsFundamentos de Sockets
Fundamentos de Sockets
 
Artigo distribuidos programação java com rmi e cobra
Artigo distribuidos programação java com rmi e cobraArtigo distribuidos programação java com rmi e cobra
Artigo distribuidos programação java com rmi e cobra
 
Demoiselle Behave - Parte 3
Demoiselle Behave - Parte 3Demoiselle Behave - Parte 3
Demoiselle Behave - Parte 3
 
Desenvolvimento de Extensões PECL
Desenvolvimento de Extensões PECLDesenvolvimento de Extensões PECL
Desenvolvimento de Extensões PECL
 
Aumente sua produtividade com Spring Boot
Aumente sua produtividade com Spring BootAumente sua produtividade com Spring Boot
Aumente sua produtividade com Spring Boot
 
Respiração Programada
Respiração ProgramadaRespiração Programada
Respiração Programada
 
Desenvolvendo uma Aplicação WEB usando o Python e o CherryPy
Desenvolvendo uma Aplicação WEB usando o Python e o CherryPyDesenvolvendo uma Aplicação WEB usando o Python e o CherryPy
Desenvolvendo uma Aplicação WEB usando o Python e o CherryPy
 
Threads
ThreadsThreads
Threads
 

Mais de Eduardo S. Pereira

Lista de Exercícios de Probabilidade e Estatística do Segundo Bimestre
Lista de Exercícios de Probabilidade e Estatística do Segundo BimestreLista de Exercícios de Probabilidade e Estatística do Segundo Bimestre
Lista de Exercícios de Probabilidade e Estatística do Segundo Bimestre
Eduardo S. Pereira
 
Aula 10 Probabilidade e Estatística
Aula 10 Probabilidade e EstatísticaAula 10 Probabilidade e Estatística
Aula 10 Probabilidade e Estatística
Eduardo S. Pereira
 
Aula de Probabilidade e Estatítisca Revisão
Aula de Probabilidade e Estatítisca RevisãoAula de Probabilidade e Estatítisca Revisão
Aula de Probabilidade e Estatítisca Revisão
Eduardo S. Pereira
 
Atividade prática Probabilidade e Estatística
Atividade prática Probabilidade e EstatísticaAtividade prática Probabilidade e Estatística
Atividade prática Probabilidade e Estatística
Eduardo S. Pereira
 
Probabilidade e Estatítica Lista de Exercícios 1
Probabilidade e Estatítica Lista de Exercícios 1Probabilidade e Estatítica Lista de Exercícios 1
Probabilidade e Estatítica Lista de Exercícios 1
Eduardo S. Pereira
 
Probabilidade e Estatística Tabelas de Frequência
Probabilidade e Estatística Tabelas de FrequênciaProbabilidade e Estatística Tabelas de Frequência
Probabilidade e Estatística Tabelas de Frequência
Eduardo S. Pereira
 
Probabilidade e Estatística Boxplot
Probabilidade e Estatística BoxplotProbabilidade e Estatística Boxplot
Probabilidade e Estatística Boxplot
Eduardo S. Pereira
 
Aula 11 Modelagem de Dados
Aula 11 Modelagem de DadosAula 11 Modelagem de Dados
Aula 11 Modelagem de Dados
Eduardo S. Pereira
 
Aula 10 Modelagem de Dados
Aula 10 Modelagem de DadosAula 10 Modelagem de Dados
Aula 10 Modelagem de Dados
Eduardo S. Pereira
 
Aula 9 Modelagem de Dados
Aula 9 Modelagem de DadosAula 9 Modelagem de Dados
Aula 9 Modelagem de Dados
Eduardo S. Pereira
 
Aula 7 Modelagem de Dados
Aula 7 Modelagem de DadosAula 7 Modelagem de Dados
Aula 7 Modelagem de Dados
Eduardo S. Pereira
 
Aula 8 Modelagem de Dados
Aula 8 Modelagem de DadosAula 8 Modelagem de Dados
Aula 8 Modelagem de Dados
Eduardo S. Pereira
 
Primeira Lista de Exercícios de Modelagem de Dados
Primeira Lista de Exercícios de Modelagem de DadosPrimeira Lista de Exercícios de Modelagem de Dados
Primeira Lista de Exercícios de Modelagem de Dados
Eduardo S. Pereira
 
Aula 06 Modelagem de Dados
Aula 06 Modelagem de DadosAula 06 Modelagem de Dados
Aula 06 Modelagem de Dados
Eduardo S. Pereira
 
Aula05
Aula05Aula05
Aula04
Aula04Aula04
Aula03
Aula03Aula03
Aula02
Aula02Aula02
Aula01
Aula01Aula01
Aula 7 - Algoritmos e Estrutura de Dados
Aula 7 - Algoritmos e Estrutura de DadosAula 7 - Algoritmos e Estrutura de Dados
Aula 7 - Algoritmos e Estrutura de Dados
Eduardo S. Pereira
 

Mais de Eduardo S. Pereira (20)

Lista de Exercícios de Probabilidade e Estatística do Segundo Bimestre
Lista de Exercícios de Probabilidade e Estatística do Segundo BimestreLista de Exercícios de Probabilidade e Estatística do Segundo Bimestre
Lista de Exercícios de Probabilidade e Estatística do Segundo Bimestre
 
Aula 10 Probabilidade e Estatística
Aula 10 Probabilidade e EstatísticaAula 10 Probabilidade e Estatística
Aula 10 Probabilidade e Estatística
 
Aula de Probabilidade e Estatítisca Revisão
Aula de Probabilidade e Estatítisca RevisãoAula de Probabilidade e Estatítisca Revisão
Aula de Probabilidade e Estatítisca Revisão
 
Atividade prática Probabilidade e Estatística
Atividade prática Probabilidade e EstatísticaAtividade prática Probabilidade e Estatística
Atividade prática Probabilidade e Estatística
 
Probabilidade e Estatítica Lista de Exercícios 1
Probabilidade e Estatítica Lista de Exercícios 1Probabilidade e Estatítica Lista de Exercícios 1
Probabilidade e Estatítica Lista de Exercícios 1
 
Probabilidade e Estatística Tabelas de Frequência
Probabilidade e Estatística Tabelas de FrequênciaProbabilidade e Estatística Tabelas de Frequência
Probabilidade e Estatística Tabelas de Frequência
 
Probabilidade e Estatística Boxplot
Probabilidade e Estatística BoxplotProbabilidade e Estatística Boxplot
Probabilidade e Estatística Boxplot
 
Aula 11 Modelagem de Dados
Aula 11 Modelagem de DadosAula 11 Modelagem de Dados
Aula 11 Modelagem de Dados
 
Aula 10 Modelagem de Dados
Aula 10 Modelagem de DadosAula 10 Modelagem de Dados
Aula 10 Modelagem de Dados
 
Aula 9 Modelagem de Dados
Aula 9 Modelagem de DadosAula 9 Modelagem de Dados
Aula 9 Modelagem de Dados
 
Aula 7 Modelagem de Dados
Aula 7 Modelagem de DadosAula 7 Modelagem de Dados
Aula 7 Modelagem de Dados
 
Aula 8 Modelagem de Dados
Aula 8 Modelagem de DadosAula 8 Modelagem de Dados
Aula 8 Modelagem de Dados
 
Primeira Lista de Exercícios de Modelagem de Dados
Primeira Lista de Exercícios de Modelagem de DadosPrimeira Lista de Exercícios de Modelagem de Dados
Primeira Lista de Exercícios de Modelagem de Dados
 
Aula 06 Modelagem de Dados
Aula 06 Modelagem de DadosAula 06 Modelagem de Dados
Aula 06 Modelagem de Dados
 
Aula05
Aula05Aula05
Aula05
 
Aula04
Aula04Aula04
Aula04
 
Aula03
Aula03Aula03
Aula03
 
Aula02
Aula02Aula02
Aula02
 
Aula01
Aula01Aula01
Aula01
 
Aula 7 - Algoritmos e Estrutura de Dados
Aula 7 - Algoritmos e Estrutura de DadosAula 7 - Algoritmos e Estrutura de Dados
Aula 7 - Algoritmos e Estrutura de Dados
 

Último

PRODUÇÃO E CONSUMO DE ENERGIA DA PRÉ-HISTÓRIA À ERA CONTEMPORÂNEA E SUA EVOLU...
PRODUÇÃO E CONSUMO DE ENERGIA DA PRÉ-HISTÓRIA À ERA CONTEMPORÂNEA E SUA EVOLU...PRODUÇÃO E CONSUMO DE ENERGIA DA PRÉ-HISTÓRIA À ERA CONTEMPORÂNEA E SUA EVOLU...
PRODUÇÃO E CONSUMO DE ENERGIA DA PRÉ-HISTÓRIA À ERA CONTEMPORÂNEA E SUA EVOLU...
Faga1939
 
TOO - TÉCNICAS DE ORIENTAÇÃO A OBJETOS aula 1.pdf
TOO - TÉCNICAS DE ORIENTAÇÃO A OBJETOS aula 1.pdfTOO - TÉCNICAS DE ORIENTAÇÃO A OBJETOS aula 1.pdf
TOO - TÉCNICAS DE ORIENTAÇÃO A OBJETOS aula 1.pdf
Momento da Informática
 
Manual-de-Credenciamento ANATER 2023.pdf
Manual-de-Credenciamento ANATER 2023.pdfManual-de-Credenciamento ANATER 2023.pdf
Manual-de-Credenciamento ANATER 2023.pdf
WELITONNOGUEIRA3
 
Segurança Digital Pessoal e Boas Práticas
Segurança Digital Pessoal e Boas PráticasSegurança Digital Pessoal e Boas Práticas
Segurança Digital Pessoal e Boas Práticas
Danilo Pinotti
 
Logica de Progamacao - Aula (1) (1).pptx
Logica de Progamacao - Aula (1) (1).pptxLogica de Progamacao - Aula (1) (1).pptx
Logica de Progamacao - Aula (1) (1).pptx
Momento da Informática
 
Certificado Jornada Python Da Hashtag.pdf
Certificado Jornada Python Da Hashtag.pdfCertificado Jornada Python Da Hashtag.pdf
Certificado Jornada Python Da Hashtag.pdf
joaovmp3
 
História da Rádio- 1936-1970 século XIX .2.pptx
História da Rádio- 1936-1970 século XIX   .2.pptxHistória da Rádio- 1936-1970 século XIX   .2.pptx
História da Rádio- 1936-1970 século XIX .2.pptx
TomasSousa7
 
DESENVOLVIMENTO DE SOFTWARE I_aula1-2.pdf
DESENVOLVIMENTO DE SOFTWARE I_aula1-2.pdfDESENVOLVIMENTO DE SOFTWARE I_aula1-2.pdf
DESENVOLVIMENTO DE SOFTWARE I_aula1-2.pdf
Momento da Informática
 

Último (8)

PRODUÇÃO E CONSUMO DE ENERGIA DA PRÉ-HISTÓRIA À ERA CONTEMPORÂNEA E SUA EVOLU...
PRODUÇÃO E CONSUMO DE ENERGIA DA PRÉ-HISTÓRIA À ERA CONTEMPORÂNEA E SUA EVOLU...PRODUÇÃO E CONSUMO DE ENERGIA DA PRÉ-HISTÓRIA À ERA CONTEMPORÂNEA E SUA EVOLU...
PRODUÇÃO E CONSUMO DE ENERGIA DA PRÉ-HISTÓRIA À ERA CONTEMPORÂNEA E SUA EVOLU...
 
TOO - TÉCNICAS DE ORIENTAÇÃO A OBJETOS aula 1.pdf
TOO - TÉCNICAS DE ORIENTAÇÃO A OBJETOS aula 1.pdfTOO - TÉCNICAS DE ORIENTAÇÃO A OBJETOS aula 1.pdf
TOO - TÉCNICAS DE ORIENTAÇÃO A OBJETOS aula 1.pdf
 
Manual-de-Credenciamento ANATER 2023.pdf
Manual-de-Credenciamento ANATER 2023.pdfManual-de-Credenciamento ANATER 2023.pdf
Manual-de-Credenciamento ANATER 2023.pdf
 
Segurança Digital Pessoal e Boas Práticas
Segurança Digital Pessoal e Boas PráticasSegurança Digital Pessoal e Boas Práticas
Segurança Digital Pessoal e Boas Práticas
 
Logica de Progamacao - Aula (1) (1).pptx
Logica de Progamacao - Aula (1) (1).pptxLogica de Progamacao - Aula (1) (1).pptx
Logica de Progamacao - Aula (1) (1).pptx
 
Certificado Jornada Python Da Hashtag.pdf
Certificado Jornada Python Da Hashtag.pdfCertificado Jornada Python Da Hashtag.pdf
Certificado Jornada Python Da Hashtag.pdf
 
História da Rádio- 1936-1970 século XIX .2.pptx
História da Rádio- 1936-1970 século XIX   .2.pptxHistória da Rádio- 1936-1970 século XIX   .2.pptx
História da Rádio- 1936-1970 século XIX .2.pptx
 
DESENVOLVIMENTO DE SOFTWARE I_aula1-2.pdf
DESENVOLVIMENTO DE SOFTWARE I_aula1-2.pdfDESENVOLVIMENTO DE SOFTWARE I_aula1-2.pdf
DESENVOLVIMENTO DE SOFTWARE I_aula1-2.pdf
 

Tutorial Rodando Python no C#

  • 1. Tutorial [Introdutório]: Criando Pluging IronPython para c# Por: Eduardo dos Santos Pereira Dr. em Astrofísica pereira.somoza@gmail.com
  • 2. Tutorial [Introdutório]: Criando Pluging IronPython para c#  Instituto Nacional de Pesquisas Espaciais/DEA Apresentado uma breve introdução de como rodar um script IronPython dentro do C#, isso permitiria a criação de plugins em IronPython para projetos que originalmente forma escritos em c#.
  • 3. Materiais  Nesse Tutorial é usado o IronPython 2.7, sendo que esse pode ser baixado no site www.ironpyton.net  .Net 4.0  Também será usado o Visual Studio 2010 Express. É necessário o C# Visual Studio 2010 ou superior pelo fato de que as versões anteriores não são compatíveis com o .Net 4.0
  • 4. Passo 1  O primeiro passo será o de criar uma nova solução no Visual Studio. Aqui será criado um novo aplicativo do Windows, ao estilo formulário.
  • 5. Passo 1: Criação de Uma Nova Solução
  • 6. Passo 2: Abrindo o Formulário  Agora será adicionado um Botão no Formulário.  Após a adição do botão, com um duplo clique no formulário será adicionado ao projeto o arquivo Form1.cs  Nesse arquivo será acrescentada a chamada do script
  • 9. Criar Botão para Chamar o Script
  • 10. Passo 3: Adicionando referências  Agora é preciso adicionar as referências (.dll) do IronPython, essas normalmente se encontram em c:/Arquivos e Programas/IronPython 2.7/  As dll's necessárias são:  IronPython.dll  IronPython.Modules.dll  Microsoft.Scripting.dll  Microsoft.Dynamic.dll  Microsoft.Scripting.Metadata.dll
  • 11. Passo 3: Adicionando referências  Essas referencias precisam ser colocadas no diretório em que se encontra o arquivo executável.  Isso irá permiter que o programa gerado rode em outra máquina que não possua o IronPython instalado  Nas Próximas figuras são mostrados esses passos.
  • 14. Definindo para que as Referências Sejam Copiadas para o Diretório do Executável Final
  • 15. Fazer com que as Referências do IronPython sejam salvas no Diretório do Executável
  • 16. O código para a Chamada
  • 17. Passo 4: Programando  Agora serão acrescentadas as chamadas das referências e criação da rotina de execução do script.  O código final ficará como segue:
  • 18. Passo 4: Programando using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; /* * Extras System modules necessaries to execute * the python script. */ using System.Collections; using System.IO; using System.Reflection; using System.Threading; /* * Iron Python Modules and Microsoft Script engine */ using IronPython; using IronPython.Hosting; using IronPython.Runtime; using IronPython.Runtime.Exceptions; using Microsoft.Scripting; using Microsoft.Scripting.Hosting;
  • 19. Passo 4: Programando using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; Gerado pelo Visual Studio using System.Linq; using System.Text; using System.Windows.Forms; /* * Extras System modules necessaries to execute * the python script. */ using System.Collections; using System.IO; using System.Reflection; using System.Threading; /* * Iron Python Modules and Microsoft Script engine */ using IronPython; using IronPython.Hosting; using IronPython.Runtime; using IronPython.Runtime.Exceptions; using Microsoft.Scripting; using Microsoft.Scripting.Hosting;
  • 20. Passo 4: Programando using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; /* * Extras System modules necessaries to execute Usando Referências * the python script. Importantes */ Do Sistema. using System.Collections; using System.IO; using System.Reflection; using System.Threading; /* * Iron Python Modules and Microsoft Script engine */ using IronPython; using IronPython.Hosting; using IronPython.Runtime; using IronPython.Runtime.Exceptions; using Microsoft.Scripting; using Microsoft.Scripting.Hosting;
  • 21. Passo 4: Programando using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; /* * Extras System modules necessaries to execute * the python script. */ using System.Collections; using System.IO; Chamando O IronPython using System.Reflection; E o Microsoft.Scripting para using System.Threading; Trabalhar /* * Iron Python Modules and Microsoft Script engine */ using IronPython; using IronPython.Hosting; using IronPython.Runtime; using IronPython.Runtime.Exceptions; using Microsoft.Scripting; using Microsoft.Scripting.Hosting;
  • 22. Passo 4: Programando namespace WindowsFormsApplication1 { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { /* * This button will start the python script into the new thread */ Thread myThread = new Thread( new ThreadStart(startPy)); myThread.Start(); } public static void startPy() { /* * This function is use to set de local directory that the * Python script program will be executed */ string filename = "/Scripts/Program.py"; string path = Assembly.GetExecutingAssembly().Location; string rootDir = Directory.GetParent(path).FullName; RunPythonFile(rootDir, filename); }
  • 23. Passo 4: Programando namespace WindowsFormsApplication1 { public partial class Form1 : Form { Código Gerado public Form1() Pelo Visual Studio { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { /* * This button will start the python script into the new thread */ Thread myThread = new Thread( new ThreadStart(startPy)); myThread.Start(); } public static void startPy() { /* * This function is use to set de local directory that the * Python script program will be executed */ string filename = "/Scripts/Program.py"; string path = Assembly.GetExecutingAssembly().Location; string rootDir = Directory.GetParent(path).FullName; RunPythonFile(rootDir, filename); }
  • 24. Passo 4: Programando namespace WindowsFormsApplication1 { public partial class Form1 : Form A Função que Chama { public Form1() O Script será Executada { Como uma nova Thread InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { /* * This button will start the python script into the new thread */ Thread myThread = new Thread( new ThreadStart(startPy)); myThread.Start(); } public static void startPy() { /* * This function is use to set de local directory that the * Python script program will be executed */ string filename = "/Scripts/Program.py"; string path = Assembly.GetExecutingAssembly().Location; string rootDir = Directory.GetParent(path).FullName; RunPythonFile(rootDir, filename); }
  • 25. Passo 4: Programando namespace WindowsFormsApplication1 { public partial class Form1 : Form Aqui são definidas as variáveis { filename, que informa o public Form1() A pastas e o script que será { InitializeComponent(); Executado. } Além disso é definido o diretório Onde está o executável. private void button1_Click(object sender, EventArgs e) { /* * This button will start the python script into the new thread */ Thread myThread = new Thread( new ThreadStart(startPy)); myThread.Start(); } public static void startPy() { /* * This function is use to set de local directory that the * Python script program will be executed */ string filename = "/Scripts/Program.py"; string path = Assembly.GetExecutingAssembly().Location; string rootDir = Directory.GetParent(path).FullName; RunPythonFile(rootDir, filename); }
  • 26. Passo 4: Programando public static int RunPythonFile(string rootDir, string filename) { /* * Create a new engine object */ ScriptEngine engine = Python.CreateEngine(); /* * New source script */ ScriptSource source; source = engine.CreateScriptSourceFromFile(rootDir + filename); /* * Create a new scope object */ ScriptScope scope = engine.CreateScope(); /* * Executin the script */ int result = source.ExecuteProgram(); return result; } } }
  • 27. Passo 4: Programando public static int RunPythonFile(string rootDir, string filename) { /* * Create a new engine object Criando o Objeto para */ A execução do Script ScriptEngine engine = Python.CreateEngine(); /* * New source script */ ScriptSource source; source = engine.CreateScriptSourceFromFile(rootDir + filename); /* * Create a new scope object */ ScriptScope scope = engine.CreateScope(); /* * Executin the script */ int result = source.ExecuteProgram(); return result; } } }
  • 28. Passo 4: Programando public static int RunPythonFile(string rootDir, string filename) { /* Definindo qual Script * Create a new engine object Será Executado */ ScriptEngine engine = Python.CreateEngine(); /* * New source script */ ScriptSource source; source = engine.CreateScriptSourceFromFile(rootDir + filename); /* * Create a new scope object */ ScriptScope scope = engine.CreateScope(); /* * Executin the script */ int result = source.ExecuteProgram(); return result; } } }
  • 29. Passo 4: Programando public static int RunPythonFile(string rootDir, string filename) { /* * Create a new engine object */ ScriptEngine engine = Python.CreateEngine(); Criando um Novo /* Escopo de execução * New source script */ ScriptSource source; source = engine.CreateScriptSourceFromFile(rootDir + filename); /* * Create a new scope object */ ScriptScope scope = engine.CreateScope(); /* * Executin the script */ int result = source.ExecuteProgram(); return result; } } }
  • 30. Passo 4: Programando public static int RunPythonFile(string rootDir, string filename) { /* * Create a new engine object */ ScriptEngine engine = Python.CreateEngine(); /* * New source script */ ScriptSource source; source = engine.CreateScriptSourceFromFile(rootDir + filename); /* Colocando o Script para * Create a new scope object Rodar */ ScriptScope scope = engine.CreateScope(); /* * Executin the script */ int result = source.ExecuteProgram(); return result; } } }
  • 31. Passo 5: Criar a Pastas que conterá os scripts
  • 32. Passo 6: Criando o Script
  • 33. Passo 6: Criando o Script  O script em IronPython será algo bem simples, ele irá apenas abrir um novo formulário em uma nova janela.  Por gerar uma nova janela, a opção de criar uma nova thread evita que ocorra um erro de gerenciamento, mas mais importante é que o novo script acaba sendo executado como uma função independente, mas que sua inicialização e finalização está ligada ao aplicativo original em C#
  • 34. Passo 6: Criando o Script import clr import sys import time clr.AddReference("System") clr.AddReference("System.Windows.Forms") clr.AddReference("System.Drawing") clr.AddReference('IronPython') from System.Windows.Forms import Application, Form, Button, Panel from System.Drawing import Size from IronPython.Compiler import CallTarget0 class myForm(Form): def __init__(self): self.Text = 'MyApp' self.CenterToScreen() self.Size = Size(590,550) if __name__ == "__main__": myapp = myForm()
  • 35. Passo 6: Criando o Script import clr import sys import time Adicionando as Referências clr.AddReference("System") clr.AddReference("System.Windows.Forms") clr.AddReference("System.Drawing") clr.AddReference('IronPython') from System.Windows.Forms import Application, Form, Button, Panel from System.Drawing import Size from IronPython.Compiler import CallTarget0 class myForm(Form): def __init__(self): self.Text = 'MyApp' self.CenterToScreen() self.Size = Size(590,550) if __name__ == "__main__": myapp = myForm()
  • 36. Passo 6: Criando o Script import clr import sys Chamda dos Módulos import time Necessário clr.AddReference("System") clr.AddReference("System.Windows.Forms") clr.AddReference("System.Drawing") clr.AddReference('IronPython') from System.Windows.Forms import Application, Form, Button, Panel from System.Drawing import Size from IronPython.Compiler import CallTarget0 class myForm(Form): def __init__(self): self.Text = 'MyApp' self.CenterToScreen() self.Size = Size(590,550) if __name__ == "__main__": myapp = myForm()
  • 37. Passo 6: Criando o Script import clr import sys import time clr.AddReference("System") clr.AddReference("System.Windows.Forms") clr.AddReference("System.Drawing") clr.AddReference('IronPython') Criando a Classe Formulário from System.Windows.Forms import Application, Form, Button, Panel from System.Drawing import Size from IronPython.Compiler import CallTarget0 class myForm(Form): def __init__(self): self.Text = 'MyApp' self.CenterToScreen() self.Size = Size(590,550) if __name__ == "__main__": myapp = myForm()
  • 38. Passo 6: Criando o Script import clr import sys import time clr.AddReference("System") clr.AddReference("System.Windows.Forms") clr.AddReference("System.Drawing") clr.AddReference('IronPython') from System.Windows.Forms import Application, Form, Button, Panel from System.Drawing import Size from IronPython.Compiler import CallTarget0 class myForm(Form): Executando o Programa def __init__(self): self.Text = 'MyApp' self.CenterToScreen() self.Size = Size(590,550) if __name__ == "__main__": myapp = myForm()
  • 39. Adicionado o Script, Lembrar de mudar para Guardar Script no diretório onde está o executável  Lembre-se de definir no projeto que o Script deverá ser copiado para a pasta onde se encontra o executável no momento em que será gerada a solução
  • 40. Adicionado o Script, Lembrar de mudar para Guardar Script no diretório onde está o executável
  • 42. FIM