Невозможно импортировать модуль запросов в Python из-за ImportError: невозможно импортировать утилиты имен

Я пытаюсь импортировать запросы модуля python в программу, которая использует python (Choregraphe для робота NAO). Я не могу использовать команды оболочки, такие как sudo install и т. Д. Я могу импортировать модуль, только переместив модуль в папку lib проекта.

Итак, я загрузил запросы из pypi, а также загрузил требования, которые я переместил в папку запросов (https://i.imgur.com/XXlSz0N.png). Но когда я пытаюсь импортировать запросы из программы, она возвращает мне ошибку:

File "C:\Users\gurfe\AppData\Roaming\PackageManager\apps\.lastUploadedChoregrapheBehavior\behavior_1\../lib\requests\__init__.py", line 112, in <module>
    from . import utils
ImportError: cannot import name utils

Почему я вижу эту ошибку?


person Federico Giuriato    schedule 23.03.2018    source источник
comment
Зависимости не должны находиться в папке requests. Зависимости представляют собой модули Python, как и requests, поэтому они должны находиться в той же папке, что и requests.   -  person Aran-Fey    schedule 23.03.2018
comment
Почему вы загружаете пакеты и перемещаете их в другие пакеты? Только 1_.   -  person abarnert    schedule 23.03.2018
comment
Я не могу использовать команды оболочки, такие как sudo install Это меня не удивляет, учитывая, что вы работаете в Windows. Вы можете использовать pip install --user requests?   -  person Aran-Fey    schedule 23.03.2018
comment
Я не могу использовать ни одну из команд, потому что этот проект будет загружен в робота. Итак, есть ли способ решить проблему без написания таких команд, как «pip intall --user requests» или «pip intall requests»?   -  person Federico Giuriato    schedule 24.03.2018
comment
@ Aran-Fey, но эти модули находятся в своих папках (например, в папке urllib3 со всеми ее скриптами и init .py), которые находятся внутри папки запросов.   -  person Federico Giuriato    schedule 24.03.2018


Ответы (2)


Включение библиотек зависимостей в ваш пакет Choregraphe может быть непростым (вам нужно убедиться, что они скомпилированы для правильной архитектуры, и для виртуального робота все будет работать по-другому), но сначала вы убедились, что этих библиотек еще нет в робот?

Я знаю, что «запросы» включены в Pepper; он может быть включен в Nao (я думаю, что это так, но у меня нет удобного Nao, чтобы проверить); если это так, вам не нужно беспокоиться о том, чтобы включить его в свой пакет (возможно, вам придется изменить путь к python при запуске на виртуальном роботе ... но во всех случаях вы должны иметь возможность полагаться на системные запросы, не упаковывая его )

person Emile    schedule 26.03.2018

Если вы используете Choregraphe, вы можете сделать это: Поместите папку lib в папку вашего проекта Choregraphe. Создайте скрипт python в Choregraphe и вставьте его в init:

class MyClass(GeneratedClass):
    def __init__(self):
        GeneratedClass.__init__(self)
        self.logger.warning("import only works on physical robot")
        behaviorPath = ALFrameManager.getBehaviorPath(self.behaviorId)
        sys.path.append(behaviorPath)
        k = behaviorPath.rfind("/")
        packagePath = behaviorPath[:k]
        sys.path.append(packagePath)

        import utils
        self.utils = utils
person Anders_K    schedule 27.03.2018