2017-08-27 9 views
0

Hallo! Ich habe ein fertiges Projekt geschrieben auf kivy und python3. Dieses Programm funktioniert gut auf allen Desktop-Betriebssystemen (Windows, Linux, MacOS), aber nach Kompilieren in eine .apk-Datei funktioniert UrlRequest nicht für mich. Was ich gerade nicht getan habe, in buildozer;UrlRequest Fehler (Name 'HTTPSConnection' ist nicht definiert) kivy

-- requirements = pyopenssl,openssl,docutils,android,python3crystax,kivy 

und in

-- android.permissions = INTERNET, ACCESS_NETWORK_STATE 

Nachdem die APK-Datei auf dem Android Installation und Drücken der Taste die Seite der Website zu kratzen, produziert Programm einen Fehler

**name 'HTTPSConnection' is not defined** 

Dies ist Teil des Codes mit urlRequest:

def get_html(self, link): 
    try: 
     from kivy.network.urlrequest import UrlRequest 
     if isinstance(link, bytes): 
      link = link.decode('utf-8') 
     reg = UrlRequest(link, debug=True, 
         on_success=self.suc, on_error=self.err) 
     while not reg.is_finished: 
      sleep(0.5) 
      Clock.tick() 
    except HTTPError: 
     pass 

def suc(self, reg, result): 
    self.add_widget(Label(
     text=str(result), font_size='15sp', color=(0, 0, 0, 1) 
    )) 

def err(self, reg, error): 
    class Error(App): 
     def build(self): 
      win_report = BugReporter(txt_report=str(error)) 
      return win_report 
    Error().run() 

in variable (link) fügt Links von einem dict.

dict_links = dict({ 
    "userful_programs": "https://pcompstart.com/?view=cat&category=1", 
    "advice_on_computer": "https://pcompstart.com/?view=cat&category=2", 
    "user_windows": "https://pcompstart.com/?view=cat&category=3", 
    "articles_in_theme": "https://pcompstart.com/?view=cat&category=4", 
    "popular_program": "https://pcompstart.com/?view=cat&category=5", 
    "other": "https://pcompstart.com/?view=cat&category=6"}) 

Volldateiprotokolle für meine buildozer.spec mit log_level = 2, in Link angebracht ist; https://15530009509605697547.googlegroups.com/attach/38c18b633925d/logcat.txt?part=0.1&view=1&vt=ANaJVrFE1tvgVU8m0abaquknNDEzcXf_tgIMDdxEzo1tMSLUhqzNrto84pYWSc4sPxksIpmwEkAWhL_2IO2dptE2TLwFKzKJ535Vct_CDD_BgCz1M2G7u50

Vielen Dank!

Oder wenn in der gleichen Datei werde ich ausführen -

from http.client import HTTPSConnection 

nach der Kompilierung dann auf Android-I-Fehler bekommen -

ImportError: cannot import name 'HTTPSConnection' 

Oder wenn i wird ausgeführt -

import ssl 

Dann nach der Kompilierung auf android ich Fehler -

ImportError: No module named '_ssl' 

Wahrscheinlich Kivy ohne SSL-Unterstützung zu kompilieren. Das ist ein Fehler oder ich liege falsch?

Antwort

0

nicht sicher, ob das helfen wird, ich bin Neuling, aber ich ging durch sehr ähnliche Tortur letzte paar Tage.

Im Wesentlichen hatte ich mit einfachen HTTPS-Anfrage zu kämpfen.Ich habe alle möglichen Bibliotheken wie urllib, urllib2, Anträge und kivys UrlRequest mit keinem Glück versucht. Zuerst habe ich python3 (wie du) ausprobiert und bin dann zu python2 gewechselt, da es generell weniger Fehler zu produzieren scheint (nicht sicher, ob das tatsächlich der Fall ist).

Am Ende habe ich mit dem gleichen Fehler endete "HTTPSconnection nicht definiert", versuchte hundert Dinge und am Ende setzen "httplib2" in Anforderungen (buildozer.spec) den Trick und es ging schließlich durch So wie auf dem Desktop. Es gab einen Fehler beim Kompilieren von httplib (ich habe ein Problem mit der Kodierung gelesen), aber es kompilierte trotzdem und funktionierte.

Meine buildozer.spec wichtige Linien sind:

requirements = kivy, android, openssl, pyopenssl, httplib2 

pyopenssl überflüssig i

erraten
android.permissions = INTERNET, ACCESS_NETWORK_STATE 

Meine main.py Importe für den Test App:

from kivy.app import App 
from kivy.uix.label import Label 
from kivy.network.urlrequest import UrlRequest 

Hope this hilft, viel Glück