从相对路径导入模块

2024-05-08 12:16:39 发布

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

我正在寻找一些关于python问题的建议。我是python的新手。我相信我依靠我在其他语言上的编程经验来完成这项工作,并且我终于停滞不前了。这是一个场景,我正在导入一个依赖于另一个模块的模块。在

我的程序司机打电话来测试.py,开头是这样的:

import sys
sys.path.append(r'C:\Program Files (x86)\Zorba XQuery Processor 2.9.1\share\zorba\uris\com\nuemeta\www\modules\DDEXpedite\bindings\Python\Code and Other Files')

import QueryDDEX

然后在查询索引.py我的档案:

^{pr2}$

在我的脑海里,我在想(1)保存当前的工作目录,(2)将当前的工作目录改为查询索引模块,(3)从相对路径导入zorba_api模块,因为如果我将此模块部署到其他计算机上,它们的文件结构可能与我的不同,(4)将当前工作目录改回原来的工作目录。在

现在,我已经读到使用相对路径是不好的,我也读到它是可以的。我看不到另一个选择,因为我没有编写zorba_api,所以我没有太多的控制权。总之,程序的输出是:

['C:\\Users\\Administrator\\Desktop', 'C:\\Python27\\Lib\\idlelib', 'C:\\Windows\\SYSTEM32\\python27.zip', 'C:\\Python27\\DLLs', 'C:\\Python27\\lib', 'C:\\Python27\\lib\\plat-win', 'C:\\Python27\\lib\\lib-tk', 'C:\\Python27', 'C:\\Python27\\lib\\site-packages', 'C:\\Program Files (x86)\\Zorba XQuery Processor 2.9.1\\share\\zorba\\uris\\com\\nuemeta\\www\\modules\\DDEXpedite\\bindings\\Python\\Code and Other Files', 'C:\\Program Files (x86)\\Zorba XQuery Processor 2.9.1\\share\\zorba\\python']

Traceback (most recent call last):
  File "C:\Users\Administrator\Desktop\Test.py", line 4, in <module>
import QueryDDEX
  File "C:\Program Files (x86)\Zorba XQuery Processor 2.9.1\share\zorba\uris\com\nuemeta\www\modules\DDEXpedite\bindings\Python\Code and Other Files\QueryDDEX.py", line 9, in <module>
    import zorba_api
ImportError: No module named zorba_api

在我看来,这正是事情变得棘手的地方,zorba iu api模块位于

C:\\Program Files (x86)\\Zorba XQuery Processor 2.9.1\\share\\zorba\\python

我们可以通过我的debug语句看到它在python类路径中。为什么我会犯这个错误?在


Tags: 模块pyimport目录apisharelibfiles
1条回答
网友
1楼 · 发布于 2024-05-08 12:16:39

看看这个场景。文件alpha.py位于C:\projects\test\。然后在C:\projects\test\modules\处还有一个名为beta.py的文件,因此要从alpha导入{},您应该:

import modules.beta

或者,将modules目录添加到您的sys.path中,这不是很好但是很有用。在

然后,如果要从beta.py文件导入模块,则必须注意不要在C:\projects\test\modules\目录中,而是在alpha.py目录中。例如,如果在modules/有第三个名为gamma.py的文件,如果您想从beta.py导入它,您应该使用:

^{pr2}$

因为您位于导入文件alpha.py)路径,而不是导入文件beta.py)路径。在

希望能帮你解决问题!在

相关问题 更多 >