Python - 将外部库用于跨系统脚本

时间:2013-10-08 15:58:50

标签: python python-requests

我正在编写一个Python脚本,将由不同操作系统上的多个人使用,我试图找出包含第三方软件包的最佳方法,以便用户不必自己安装软件包在运行脚本之前。我正在使用的特定库是Requests包。当我通过pip安装它时,它对我很有用,但是当我下载源并尝试从我的项目根目录导入它时,它不起作用。我得到“尝试非包装中的相对导入”或“没有名为MyProject.request的模块”,具体取决于我尝试导入它。

所以我想我的第一个问题是,我是否接近这个权利?我从来没有为更多的用户编写python脚本而不仅仅是我自己,所以我从来没有关心过像软件包安装这样的问题。是否包含Requests库的源并将其相对于我的项目导入是正确的方法,还是有更简单的方法?

作为一个后续问题,如果我走在正确的轨道上,在我的项目中包含此软件包的正确程序是什么?现在我的文件结构如下所示:

MyProject/
    __init__.py
    main.py
    requests/
        requests/
            __init__.py
            [bunch of other stuff]
        [other files/folders]

在main.py中,我尝试了from .MyProject.requests import requestsfrom .requests import requests,并且都给了我“在非包裹中尝试相对导入”。我还没有搞过sys.path,但是我看到了混合的建议是否这是“正确”的方式。我主要担心的是让这个脚本在用户机器上运行,除了运行它之外不需要做任何事情。我不希望用户必须安装外部软件包,但我似乎无法通过尝试导入源来使其工作。

1 个答案:

答案 0 :(得分:0)

Per Evert的回复,我的问题似乎是多个“请求”目录。当我向上移动子目录并从请求源中删除多余的文件/目录时,它工作得很好。