python为什么不能导入当前目录模块

aiqier627 2013-01-18 11:45:05
我用C语言去调用python,我装好了python-dev,gcc的命令也没有问题,gcc -I/usr/include/python2.6 -lpython2.6 -o main main.c
代码如下:
#include <Python.h>
#include <stdio.h>
int main()
{
Py_Initialize();

PyObject *pModule = NULL;
PyObject *pFunc = NULL;

/*PyRun_SimpleString("import sys");
PyRun_SimpleString("sys.path.append('./')");
*/

pModule = PyImport_ImportModule("ss");
if (pModule == NULL)
printf("can't import module\n");
pFunc = PyObject_GetAttrString(pModule, "hello");
PyEval_CallObject(pFunc,NULL);
Py_Finalize();

return 0;
}

如果把那段注释的代码加上,代码正确,否则,PyImport_ImportModule没有导入模块,ss.py跟c代码在同一目录,python不是可以导入当前目录的模块马?为什么这里不行?
...全文
307 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
ImN1 2013-01-18
  • 打赏
  • 举报
回复
编译不晓得,下面参考一下—— ./ 指的是运行时的目录,不是文件所在目录 例如 c:\abc>python d:\def\test.py sys.path.append('./') 在 test.py里面的话,相当于 sys.path.append('c:\abc\') 我之前遇到类似问题,只能用绝对路径append 或 外部指定运行路径到test.py所在路径 解决
bugs2k 2013-01-18
  • 打赏
  • 举报
回复
貌似当前目录是这个程序的可执行文件所在的目录吧
aiqier627 2013-01-18
  • 打赏
  • 举报
回复
引用 3 楼 bugs2k 的回复:
http://wiki.woodpecker.org.cn/moin/PP3eD/Ch-23-3
谢谢你。我刚才在c语言初始化的解释器和python解释器中分别调用pprint.pprint(sys.path),我发现c语言初始化的解释器没有'',这一项,我觉得它可能就是代表当前目录,当我试着在python的解释器中删除''这个空项时,python解释器也不能导入当前目录了。

37,719

社区成员

发帖
与我相关
我的任务
社区描述
JavaScript,VBScript,AngleScript,ActionScript,Shell,Perl,Ruby,Lua,Tcl,Scala,MaxScript 等脚本语言交流。
社区管理员
  • 脚本语言(Perl/Python)社区
  • IT.BOB
加入社区
  • 近7日
  • 近30日
  • 至今

试试用AI创作助手写篇文章吧