WedX - журнал о программировании и компьютерных науках

Ошибка при запуске Pyinstaller (Python)

У меня есть этот код, он генерирует веб-карту с фолиумом, читает некоторые файлы и наносит на карту несколько линий.

Я хочу поделиться своей программой с группой людей, которые ничего не знают о python, поэтому я хочу создать файл .exe. Я использую python 3.6.1 с последней версией разработки pyinstaller, но получаю сообщение об ошибке, когда пытаюсь запустить исполняемый файл.

NotImplementedError: Невозможно выполнить эту операцию для незарегистрированного типа загрузчика Не удалось выполнить скрипт map_generator

Кто-нибудь знает, что я могу сделать? может быть, какие-либо другие пакеты для этого?

Спасибо всем

import folium
import pandas
from fastkml import kml


def get_group(elev):
    if elev in range(0,1000):
        group = cero
    elif elev in range(1000,2000):
        group = mil
    elif elev in range(2000,3000):
        group = dosmil
    elif elev in range(3000,4000):
        group = tresmil
    elif elev in range(4000,5000):
        group = cuatromil
    elif elev in range(5000,6000):
        group = cincomil
    elif elev in range(6000,7000):
        group = seismil
    elif elev in range(7000,8000):
        group = sietemil
    elif elev in range(8000,9000):
        group = ochomil
    elif elev in range(9000,10000):
        group = nuevemil
    elif elev in range(10000,11000):
        group = diezmil
    elif elev in range(11000,12000):
        group = oncemil
    elif elev in range(12000,13000):
        group = docemil
    elif elev in range(13000,14000):
        group = trecemil
    elif elev in range(14000,15000):
        group = catorcemil
    elif elev in range(15000,16000):
        group = quincemil
    elif elev in range(16000,17000):
        group = dieciseismil
    elif elev in range(17000,18000):
        group = diecisietemil
    elif elev in range(18000,19000):
        group = dieciochomil
    elif elev in range(19000,20000):
        group = diecinuevemil
    else:
        group = veintemil
    return group   


def colorear(elev):
    if elev in range(0,1000):
        color = '#5d005e'
    elif elev in range(1000,2000):
        color = '#950096'
    elif elev in range(2000,3000):
        color = '#fd00ff'
    elif elev in range(3000,4000):
        color = '#16005c'
    elif elev in range(4000,5000):
        color = '#240198'
    elif elev in range(5000,6000):
        color = '#4f21e3'
    elif elev in range(6000,7000):
        color = '#06334f'
    elif elev in range(7000,8000):
        color = '#115e8d'
    elif elev in range(8000,9000):
        color = '#28aeff'
    elif elev in range(9000,10000):
        color = '#045e45'
    elif elev in range(10000,11000):
        color = '#299c7d'
    elif elev in range(11000,12000):
        color = '#083c00'
    elif elev in range(12000,13000):
        color = '#128700'
    elif elev in range(13000,14000):
        color = '#359826'
    elif elev in range(14000,15000):
        color = '#33fd14'
    elif elev in range(15000,16000):
        color = '#777e07'
    elif elev in range(16000,17000):
        color = '#c0cc06'
    elif elev in range(17000,18000):
        color = '#eaf62a'
    elif elev in range(18000,19000):
        color = '#ff8100'
    elif elev in range(19000,20000):
        color = '#b00000'
    else:
        color = '#ff2e2e'
    return color




map = folium.Map(location=[-13.537638,-71.943920], zoom_start=6, tiles='Stamen Terrain', control_scale=True)



cero = folium.FeatureGroup(name = '0 ft')
mil = folium.FeatureGroup(name = '1000 ft')
dosmil = folium.FeatureGroup(name = '2000 ft')
tresmil = folium.FeatureGroup(name = '3000 ft')
cuatromil = folium.FeatureGroup(name = '4000 ft')
cincomil = folium.FeatureGroup(name = '5000 ft')
seismil = folium.FeatureGroup(name = '6000 ft')
sietemil = folium.FeatureGroup(name = '7000 ft')
ochomil = folium.FeatureGroup(name = '8000 ft')
nuevemil = folium.FeatureGroup(name = '9000 ft')
diezmil = folium.FeatureGroup(name = '10000 ft')
oncemil = folium.FeatureGroup(name = '11000 ft')
docemil = folium.FeatureGroup(name = '12000 ft')
trecemil = folium.FeatureGroup(name = '13000 ft')
catorcemil = folium.FeatureGroup(name = '14000 ft')
quincemil = folium.FeatureGroup(name = '15000 ft')
dieciseismil = folium.FeatureGroup(name = '16000 ft')
diecisietemil = folium.FeatureGroup(name = '17000 ft')
dieciochomil = folium.FeatureGroup(name = '18000 ft')
diecinuevemil = folium.FeatureGroup(name = '19000 ft')
veintemil = folium.FeatureGroup(name = '20000 ft')
ruta = folium.FeatureGroup(name = 'ruta')


k = kml.KML()
k.from_string(open("ruta.kml").read())
features = list(k.features())
folders = list(features[0].features())
placemarks = list(folders[0].features())
coordenadas_ruta = placemarks[0].geometry.coords
flight_path = list()
for coordenada in coordenadas_ruta:
    coor = (coordenada[1],coordenada[0])
    flight_path.append(coor)
ruta.add_child(folium.PolyLine(locations = flight_path))    


geojson = pandas.read_json('topo.geojson')
for linea in geojson['features']:
    grupo = get_group(int(linea['properties']['ELEVATION'][:linea['properties']['ELEVATION'].find(' ')]))
    coors = linea['geometry']['coordinates']
    (folium.PolyLine(locations=coors,latlon=False, weight=6,color=colorear(int(linea['properties']['ELEVATION'][:linea['properties']['ELEVATION'].find(' ')])))).add_to(grupo)

m = pandas.read_csv('picos.csv')
for id,altitud,latitud,longitud in zip(m['ID'],m['ALT'],m['LAT'],m['LON']):
    grupo = get_group(altitud)
    folium.RegularPolygonMarker(location=[latitud,longitud], popup=folium.Popup(str(altitud)+' ft'),
                   fill_color=colorear(altitud), number_of_sides=3, radius=10).add_to(grupo)


map.add_child(cero)
map.add_child(mil)
map.add_child(dosmil)
map.add_child(tresmil)
map.add_child(cuatromil)
map.add_child(cincomil)
map.add_child(seismil)
map.add_child(sietemil)
map.add_child(ochomil)
map.add_child(nuevemil)
map.add_child(diezmil)
map.add_child(oncemil)
map.add_child(docemil)
map.add_child(trecemil)
map.add_child(catorcemil)
map.add_child(quincemil)
map.add_child(dieciseismil)
map.add_child(diecisietemil)
map.add_child(dieciochomil)
map.add_child(diecinuevemil)
map.add_child(veintemil)
map.add_child(ruta)


map.add_child(folium.LayerControl())


map.save('mapa.html')

Ответы:


1

Попробуйте добавить пустой файл с именем __init__.py в каталог, содержащий ваш код. Это позволяет Python рассматривать ваш каталог как пакет.

07.06.2017
  • Спасибо !! но это не сработало. Кажется, это проблема pyinstaller. Попробую с py2exe. 12.06.2017
  • Новые материалы

    Объяснение документов 02: BERT
    BERT представил двухступенчатую структуру обучения: предварительное обучение и тонкая настройка. Во время предварительного обучения модель обучается на неразмеченных данных с помощью..

    Как проанализировать работу вашего классификатора?
    Не всегда просто знать, какие показатели использовать С развитием глубокого обучения все больше и больше людей учатся обучать свой первый классификатор. Но как только вы закончите..

    Работа с цепями Маркова, часть 4 (Машинное обучение)
    Нелинейные цепи Маркова с агрегатором и их приложения (arXiv) Автор : Бар Лайт Аннотация: Изучаются свойства подкласса случайных процессов, называемых дискретными нелинейными цепями Маркова..

    Crazy Laravel Livewire упростил мне создание электронной коммерции (панель администратора и API) [Часть 3]
    Как вы сегодня, ребята? В этой части мы создадим CRUD для данных о продукте. Думаю, в этой части я не буду слишком много делиться теорией, но чаще буду делиться своим кодом. Потому что..

    Использование машинного обучения и Python для классификации 1000 сезонов новичков MLB Hitter
    Чему может научиться машина, глядя на сезоны новичков 1000 игроков MLB? Это то, что исследует это приложение. В этом процессе мы будем использовать неконтролируемое обучение, чтобы..

    Учебные заметки: создание моего первого пакета Node.js
    Это мои обучающие заметки, когда я научился создавать свой самый первый пакет Node.js, распространяемый через npm. Оглавление Глоссарий I. Новый пакет 1.1 советы по инициализации..

    Забудьте о Matplotlib: улучшите визуализацию данных с помощью умопомрачительных функций Seaborn!
    Примечание. Эта запись в блоге предполагает базовое знакомство с Python и концепциями анализа данных. Привет, энтузиасты данных! Добро пожаловать в мой блог, где я расскажу о невероятных..


    Для любых предложений по сайту: [email protected]