我正在寻找一些关于我遇到的python问题的建议。我是python的新手。我相信我依靠其他语言的编程经验来完成这项工作,并且我终于停滞不前。这里是场景,我正在导入一个依赖于另一个模块的模块。从相对路径导入模块
我的节目,叫司机test.py,开始时是这样的:在QueryDDEX.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
然后,我有:
import sys,os
temp = os.getcwd()
os.chdir(os.path.dirname(os.path.realpath(__file__)))
sys.path.append(os.path.realpath("..\..\..\..\..\..\..\..\..\python"))
print sys.path
import zorba_api
os.chdir(temp)
在我脑子里,我想(1)保存当前工作目录,(2)将当前工作目录更改为QueryDDEX.py模块的目录,(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_api模块位于
C:\\Program Files (x86)\\Zorba XQuery Processor 2.9.1\\share\\zorba\\python
,我们可以通过我的调试语句看到它IS在python类路径中。那么,为什么我会得到这个错误?
我明白你在说什么,但也许我不知道,因为我仍然不明白为什么我的解决方案在这种情况下不起作用。我将当前工作目录更改为__file__,因此它位于模块的位置,然后尝试使用从第一个模块到第二个模块的相对路径。它适用于我使用绝对路径。最后,我能做些什么来解决它?我开始明白为什么我的程序不能正常工作,但现在我更加困惑于如何让它工作。 – zg303
在你的'QueryDDEX中追加一个新路径。py'文件你应该注意你在'test.py'路径,所以也许你提供的路径是错误的。 – cdonts
原来我是我的相对路径中的一个目录,添加“/../”解决了这个问题。感谢您的帮助,如果没有您,需要花费更长的时间进行调试。 – zg303