Python模块的路径

2024-04-19 05:25:56 发布

您现在位置:Python中文网/ 问答频道 /正文

在某些Python脚本中,我看到以下导入:

import fileA
import someDir.fileB
from fileC import functionA

存在相应的文件fileA.pysomeDir/fileB.py和{}。但是,在查找Requests源代码时,我在__init__.py文件中发现了这一点:

^{pr2}$

在本例中,requests是CWD,packages.urllib3.contrib.pyopenssl.py是文件。为什么这违反惯例?我确实看到packages.urllib3.contrib目录也有一个__init__.py文件,它seems to be related。在

此外,我不确定它是否相关,但我认为它是,所以我把它张贴在这里。在我的脚本中,我有一个文件夹kennethreitz/requests,因为应用程序依赖于请求模块,但我将其部署到可能没有安装请求的环境中。但是,简单地添加到文件import kennethreitz.requests并不包括请求模块。我import kennethreitz.requests.__init__和其他一些明显的排列,但是我无法导入模块。如何用代码打包请求?显而易见的Google searches无济于事。在


Tags: 模块文件frompyimport脚本initpackages
1条回答
网友
1楼 · 发布于 2024-04-19 05:25:56

requests正在使用绝对导入。您不能随意地将包嵌套到其他目录中,而仍然期望事情能够正常工作。在

相反,将kennethreitz目录(它应该不是有一个__init__.py文件)添加到sys.path模块搜索路径中。这样,requests模块仍然可以作为顶级包导入。在

接下来,您可能需要研究Python打包、依赖关系,并使用pip或{}等工具为您部署代码。这些工具为您处理依赖关系,并将根据需要安装requests。有关介绍,请参阅Python Packaging User Guide。在

相关问题 更多 >