Luiey Ichigo Ответов: 0

Запустите 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

0 Ответов