在某些Python脚本中,我看到以下导入:
import fileA
import someDir.fileB
from fileC import functionA
存在相应的文件fileA.py
、someDir/fileB.py
和{__init__.py
文件中发现了这一点:
在本例中,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无济于事。在
requests
正在使用绝对导入。您不能随意地将包嵌套到其他目录中,而仍然期望事情能够正常工作。在相反,将
kennethreitz
目录(它应该不是有一个__init__.py
文件)添加到sys.path
模块搜索路径中。这样,requests
模块仍然可以作为顶级包导入。在接下来,您可能需要研究Python打包、依赖关系,并使用}等工具为您部署代码。这些工具为您处理依赖关系,并将根据需要安装
pip
或{requests
。有关介绍,请参阅Python Packaging User Guide。在相关问题 更多 >
编程相关推荐