Невозможно импортировать имя 'TypedDict' ошибка при использовании Dedupe в Python - PullRequest
1 голос
/ 19 июня 2020

Я создал настраиваемое действие в фабрике данных и пытаюсь запустить следующий код. Я также создал пакетную учетную запись и пулы. Мне удалось успешно запустить простой код python. Но когда я пытаюсь выполнить следующий код, я получаю сообщение об ошибке «импорт дедупликации» в следующем коде. Не могли бы вы сообщить мне, почему я получаю эту ошибку, я что-то упускаю?

import os
import csv
import re
import logging
import optparse
import pandas as pd
import numpy as np
import dedupe
import pickle

if __name__ == '__main__':

optp = optparse.OptionParser()
optp.add_option('-v', '--verbose', dest='verbose', action='count',
                help='Increase verbosity (specify multiple times for more)'
                )
(opts, args) = optp.parse_args()
log_level = logging.WARNING
if opts.verbose:
    if opts.verbose == 1:
        log_level = logging.INFO
    elif opts.verbose >= 2:
        log_level = logging.DEBUG
logging.getLogger().setLevel(log_level)

input_file = 'testfile.csv'
output_file = 'out.csv'
settings_file = 'settings'
training_file = 'trainingfile.json'


print('importing data ...')

data = pd.read_csv(input_file)
data.set_index('Id')
data = data.where(pd.notnull(data), None)
data_d = data.to_dict('index')

if os.path.exists(settings_file):
    print('reading from', settings_file)
    with open(settings_file, 'rb') as f:
        deduper = dedupe.StaticDedupe(f)
else:
    fields = [
        {'field' : 'fname', 'type': 'String'},
        {'field' : 'lname', 'type': 'ShortString','has missing' : True},
        {'field' : 'rnamr', 'type': 'String', 'has missing' : True},
        {'field' : 'add', 'type': 'String', 'has missing' : True},
        {'field' : 'username', 'type': 'ShortString', 'has missing' : True},
        {'field' : 'namecommon', 'type': 'String', 'has missing' : True},
        {'field' : 'wenurl', 'type': 'String', 'has missing' : True},
        {'field' : 'country', 'type': 'ShortString', 'has missing' : True},
        ]

    print('Creating deduper')
    deduper = dedupe.Dedupe(fields)

Ошибка:

Traceback (most recent call last):
File "main.py", line 8, in <module>
import dedupe
File "C:\Anaconda\lib\site-packages\dedupe\__init__.py", line 6, in <module>
from dedupe._init import *  # noqa
File "C:\Anaconda\lib\site-packages\dedupe\_init.py", line 1, in <module>
from dedupe.api import StaticDedupe, Dedupe  # noqa: F401
File "C:\Anaconda\lib\site-packages\dedupe\api.py", line 21, in <module>
 import dedupe.core as core
File "C:\Anaconda\lib\site-packages\dedupe\core.py", line 22, in <module>
 from dedupe._typing import (RecordPairs, RecordID, Blocks, Data, Literal)
 File "C:\Anaconda\lib\site-packages\dedupe\_typing.py", line 15, in <module>
  from typing_extensions import TypedDict, Protocol, Literal
ImportError: cannot import name 'TypedDict'
...