我正在编写一个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 requests
和from .requests import requests
,并且都给了我“在非包裹中尝试相对导入”。我还没有搞过sys.path,但是我看到了混合的建议是否这是“正确”的方式。我主要担心的是让这个脚本在用户机器上运行,除了运行它之外不需要做任何事情。我不希望用户必须安装外部软件包,但我似乎无法通过尝试导入源来使其工作。
答案 0 :(得分:0)
Per Evert的回复,我的问题似乎是多个“请求”目录。当我向上移动子目录并从请求源中删除多余的文件/目录时,它工作得很好。