Запустите Python в консольном приложении, чтобы быть pulish для webjobs
Привет,
Весь скрипт / код сделан на Visual Studio 2015. У меня есть 3 вида связанных ситуаций.
1. мне нужно получить доступ к SOAP WSDL. Итак, я создаю новое приложение python на VS2015 и пишу сценарий для использования из WSDL и отправки в облако Azure. Весь модуль может быть установлен с помощью pip. Но есть один модуль, который не может быть установлен ,который является "iothub_client". Итак, я поискал в интернете и нашел установщик iothub_client. Путь установки по умолчанию включен "C:\Python27\Lib\site-packages" которые по ссылкам решений, то добавить iothub_client.PYD на ссылки в виде дерева. Да, скрипт работает хорошо и потребляет информацию из WSDL и отправляет ее в центр Интернета вещей. Идеально! К сожалению, это работает только в том случае, если я запускаю из решений, если я запускаю из командной строки или Pyton 2.7 IDLE, это вызовет ошибку не найденного модуля iothub_clients.pyd на сайте-пакетах. Путь уже установлен на переменных окружения.
2. Я пытаюсь использовать консольное приложение, которое будет потреблять WSDL-файла с помощью класса HttpRequest. Эта часть никогда не была успешной, так как она возвращает XML-формат веб-служб. Не прямое значение, как это делается на SOAPUI.
3. Перейти к другому пути, используя установить IronPython, чтобы выполнить файл. Да, у него есть та же ошибка неспособности загрузить модуль, который был объявлен на Python. Мое основное намерение использовать консоль и IronPython заключается в том, что у меня уже есть код, который успешно отправляет данные в IoT Hub. Итак, я просто хочу использовать python для запроса из WSDL и передать значение консольному приложению, и оно сделает все остальное.
Это сценарий для ситуации 1:-
#!/usr/bin/env python #!/usr/bin/python #!/usr/local/lib #!/bin/env python #! python # ^ import random import datetime import hmac import base64 import urllib2 import time import socket import thread import site; site.getsitepackages() from distutils.sysconfig import get_python_lib; print get_python_lib() try: import xml.etree.cElementTree as ET except ImportError: import xml.etree.ElementTree as ET import re from pysimplesoap.client import SoapClient from SOAPpy import WSDL from paho.mqtt import client as mqtt import sys import re import json import requests import iothub_client from iothub_client import * from iothub_client_args import *
Путь клиента центра интернета вещей: C:\Python27\Lib\site-packages\iothub_client\iothub_client.pyd
Копировать в локальный: True
Это сценарий для ситуации 2:-
- Использование веб-ссылки не удалось
Private Sub WebReferenceTools() Dim ws As New RDMServices Dim objdevice = ws.GetDeviceList() If Not (IsNothing(objdevice)) Then Dim type As Type = objdevice.GetType() Dim properties() As PropertyInfo = type.GetProperties() For Each [property] As PropertyInfo In properties Dim trythis = GetProprtiesValue(objslavelist, [property].Attributes.GetType.FullName) If Not (IsNothing(trythis)) Then firstheaders.Add([property].Name) firstvalue.Add(trythis) Console.WriteLine("Name " & [property].Name & ", Value: " & trythis) End If Next [property] End Sub
** Невозможно получить вложенные Свойства, где свойства содержат другой класс / структуру. Только в состоянии обнаружить только для строки / целого числа
- Использовать ручной HTTP-запрос не удалось
** Failed by mean не может получить результирующий набор XML вместо получения XML-формата дерева структуры веб-службы из URL-адреса
Это сценарий для ситуации 3:-
Option Explicit On Option Strict On Imports System.Xml.Linq Imports IronPython.Hosting Imports Microsoft.Scripting.Hosting Imports IronPython.Runtime.Types Module Module1 Sub Main() Dim py = Python.CreateEngine() Try py.ExecuteFile("PythonApplication.py") Catch ex As Exception Console.WriteLine("Oops! We couldn't execute the script because of an exception: " & ex.Message) End Try Console.ReadLine() End Sub
## Скрипт py может быть выполнен. Но как передать запрос данных python консольному приложению обратно для следующего процесса?
Что я уже пробовал:
1:-
#!/usr/bin/env python #!/usr/bin/python #!/usr/local/lib #!/bin/env python #! python # ^ import random import datetime import hmac import base64 import urllib2 import time import socket import thread import site; site.getsitepackages() from distutils.sysconfig import get_python_lib; print get_python_lib() try: import xml.etree.cElementTree as ET except ImportError: import xml.etree.ElementTree as ET import re from pysimplesoap.client import SoapClient from SOAPpy import WSDL from paho.mqtt import client as mqtt import sys import re import json import requests import iothub_client from iothub_client import * from iothub_client_args import *
2:-
Private Sub WebReferenceTools() Dim ws As New RDMServices Dim objdevice = ws.GetDeviceList() If Not (IsNothing(objdevice)) Then Dim type As Type = objdevice.GetType() Dim properties() As PropertyInfo = type.GetProperties() For Each [property] As PropertyInfo In properties Dim trythis = GetProprtiesValue(objslavelist, [property].Attributes.GetType.FullName) If Not (IsNothing(trythis)) Then firstheaders.Add([property].Name) firstvalue.Add(trythis) Console.WriteLine("Name " & [property].Name & ", Value: " & trythis) End If Next [property] End Sub
3:-
Option Explicit On Option Strict On Imports System.Xml.Linq Imports IronPython.Hosting Imports Microsoft.Scripting.Hosting Imports IronPython.Runtime.Types Module Module1 Sub Main() Dim py = Python.CreateEngine() Try py.ExecuteFile("PythonApplication.py") Catch ex As Exception Console.WriteLine("Oops! We couldn't execute the script because of an exception: " & ex.Message) End Try Console.ReadLine() End Sub