1

我正在尝试在使用 python 的程序中导入 python 模块请求(机器人 NAO 的编排)。我不能使用 sudo install 等 shell 命令...我只能通过将模块移动到项目的 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

为什么我会看到此错误?

4

2 回答 2

0

如果您使用 Choregraphe,您可以这样做: 将 lib 文件夹放在 Choregraphe 项目文件夹中。在 Choregraphe 中创建一个 python 脚本并将其粘贴到 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
于 2018-03-27T08:57:51.950 回答
0

在你的 Choregraphe 包中包含依赖库可能会很棘手(你需要确保它们是为正确的架构编译的,并且对于虚拟机器人来说事情会有所不同) - 但首先,你是否确保这些库不在机器人?

我知道 Pepper 中包含“请求”;它可能包含在 Nao 中(我认为是,但我没有方便的 Nao 来检查);如果是,您无需担心将其包含在您的包中(在虚拟机器人上运行时您可能需要修改 pythonpath ......但在所有情况下,您应该能够依赖系统请求而不打包它)

于 2018-03-26T08:55:29.407 回答