C++调用python非标准库的问题。

Enter空格 2013-12-17 04:02:46
现在工程里使用了python脚本。
脚本中使用了非python标准库。
现在的问题是,在我机器上单独运行这个脚本是可行的。
但是使用可执行文件调用这个脚本,就会提示找不到那个非标准库库的模块。
请教下,怎么破。
...全文
427 21 打赏 收藏 转发到动态 举报
写回复
用AI写文章
21 条回复
切换为时间正序
请发表友善的回复…
发表回复
beichen 2015-01-25
  • 打赏
  • 举报
回复
楼主你怎么解决的阿?
fenh 2014-12-15
  • 打赏
  • 举报
回复
敢问楼主的问题解决了没,我也遇到了类似问题,无法解决!
赵4老师 2013-12-18
  • 打赏
  • 举报
回复
对脚本就不能当函数调用了? 用命令行参数或文本文件作入参,用重定向标准输出到文本文件或直接输出结果到文本文件作返回值,不一样当函数调用吗?
赵4老师 2013-12-18
  • 打赏
  • 举报
回复
引用 15 楼 hui211314ddhui 的回复:
[quote=引用 11 楼 zhao4zhong1 的回复:] 不要做A语言代码修改为B语言代码的无用功。 也不要做用A语言代码直接调用B语言代码库这样复杂、这样容易出错的傻事。 只需让A、B语言代码的输入输出重定向到文本文件,或修改A、B语言代码让其通过文本文件输入输出。 即可很方便地让A、B两种语言之间协调工作。
赵老师每天都要来一遍,敢不敢再来一遍‘Dos->汇编。。。‘[/quote] 那有啥不敢的! 计算机组成原理→DOS命令→汇编语言→C语言(不包括C++)、代码书写规范→数据结构、编译原理、操作系统→计算机网络、数据库原理、正则表达式→其它语言(包括C++)、架构……
lee_鹿游原 2013-12-18
  • 打赏
  • 举报
回复
引用 16 楼 mymixing 的回复:
[quote=引用 13 楼 lile1234_show 的回复:] [quote=引用 12 楼 mymixing 的回复:] 唉,C:\Python27 ~~~PIL的每个层级的目录都试过了。。 就是找不到。。惆怅
刚回来。

def MyImage():
	im = Image.new("RGB",(100,100))
	draw = ImageDraw.Draw(im)
	draw.line(((10,10),(90,90)),fill = 255)
	im.save("Lee.jpg")
C++ 调用没问题.. 还是你要在C++中,直接写 image函数.. [/quote] 我C++调用了同一个脚本里, 调用一个只用了标准库的PY函数是好使的。 调用另一个使用了PIL库中的Image模块的PY函数,py就会抛出异常 异常输出:the __imaging C modle is not installed
引用 14 楼 hui211314ddhui 的回复:
使用py2exe,会进行对py进行打包,把打包后的文件放到指定目录。 希望我回答的是你所问的问题;
我不是要对python脚本进行打包转换成可执行文件。 是要调用python脚本,但C++加载了PY解释器后,这个可执行程序中的解释器 就不知道到哪找PIL库的Image modle了。[/quote] 看你的代码,也确实导入 PIL了,只能看一下 python的版本和 PIL的版本是否匹配。 google下这方面的错误吧
Enter空格 2013-12-18
  • 打赏
  • 举报
回复
引用 13 楼 lile1234_show 的回复:
[quote=引用 12 楼 mymixing 的回复:] 唉,C:\Python27 ~~~PIL的每个层级的目录都试过了。。 就是找不到。。惆怅
刚回来。

def MyImage():
	im = Image.new("RGB",(100,100))
	draw = ImageDraw.Draw(im)
	draw.line(((10,10),(90,90)),fill = 255)
	im.save("Lee.jpg")
C++ 调用没问题.. 还是你要在C++中,直接写 image函数.. [/quote] 我C++调用了同一个脚本里, 调用一个只用了标准库的PY函数是好使的。 调用另一个使用了PIL库中的Image模块的PY函数,py就会抛出异常 异常输出:the __imaging C modle is not installed
引用 14 楼 hui211314ddhui 的回复:
使用py2exe,会进行对py进行打包,把打包后的文件放到指定目录。 希望我回答的是你所问的问题;
我不是要对python脚本进行打包转换成可执行文件。 是要调用python脚本,但C++加载了PY解释器后,这个可执行程序中的解释器 就不知道到哪找PIL库的Image modle了。
hui211314ddhui 2013-12-18
  • 打赏
  • 举报
回复
引用 11 楼 zhao4zhong1 的回复:
不要做A语言代码修改为B语言代码的无用功。 也不要做用A语言代码直接调用B语言代码库这样复杂、这样容易出错的傻事。 只需让A、B语言代码的输入输出重定向到文本文件,或修改A、B语言代码让其通过文本文件输入输出。 即可很方便地让A、B两种语言之间协调工作。
赵老师每天都要来一遍,敢不敢再来一遍‘Dos->汇编。。。‘
hui211314ddhui 2013-12-18
  • 打赏
  • 举报
回复
使用py2exe,会进行对py进行打包,把打包后的文件放到指定目录。 希望我回答的是你所问的问题;
lee_鹿游原 2013-12-17
  • 打赏
  • 举报
回复
引用 12 楼 mymixing 的回复:
唉,C:\Python27 ~~~PIL的每个层级的目录都试过了。。 就是找不到。。惆怅
刚回来。

def MyImage():
	im = Image.new("RGB",(100,100))
	draw = ImageDraw.Draw(im)
	draw.line(((10,10),(90,90)),fill = 255)
	im.save("Lee.jpg")
C++ 调用没问题.. 还是你要在C++中,直接写 image函数..
Enter空格 2013-12-17
  • 打赏
  • 举报
回复
唉,C:\Python27 ~~~PIL的每个层级的目录都试过了。。 就是找不到。。惆怅
赵4老师 2013-12-17
  • 打赏
  • 举报
回复
不要做A语言代码修改为B语言代码的无用功。 也不要做用A语言代码直接调用B语言代码库这样复杂、这样容易出错的傻事。 只需让A、B语言代码的输入输出重定向到文本文件,或修改A、B语言代码让其通过文本文件输入输出。 即可很方便地让A、B两种语言之间协调工作。
图灵狗 2013-12-17
  • 打赏
  • 举报
回复
也是提示找不到Image库?
引用 8 楼 mymixing 的回复:
[quote=引用 6 楼 zhao4zhong1 的回复:] 或者 system("cd /d XXX.py所在目录&python.exe XXX.py");
你这个是启动解释器执行脚本。 但是我的脚本试用来给C++调用的。 脚本里俩函数不是让他们自执行的。
引用 7 楼 turingo 的回复:
试试这样加第三方库: PyRun_SimpleString("import sys") PyRun_SimpleString("sys.path.append('./')") [quote=引用 楼主 mymixing 的回复:] 现在工程里使用了python脚本。 脚本中使用了非python标准库。 现在的问题是,在我机器上单独运行这个脚本是可行的。 但是使用可执行文件调用这个脚本,就会提示找不到那个非标准库库的模块。 请教下,怎么破。
[/quote] 你这个应该靠谱,不过还是不知道该怎么写。 python的导入代码
from PIL import Image
我PIL的安装目录C:\Python27\Lib\site-packages\PIL 刚直接在C++中这样用
PyRun_SimpleString("from PIL import Image");
PyRun_SimpleString("sys.path.append('C:\Python27\Lib\site-packages\PIL')");
python报错了[/quote]
Enter空格 2013-12-17
  • 打赏
  • 举报
回复
改成
		PyRun_SimpleString("import sys");
			PyRun_SimpleString("sys.path.append('C:\\Python27\\Lib\\site-packages\\PIL')");
还是提示找不到库路径。
Enter空格 2013-12-17
  • 打赏
  • 举报
回复
引用 6 楼 zhao4zhong1 的回复:
或者 system("cd /d XXX.py所在目录&python.exe XXX.py");
你这个是启动解释器执行脚本。 但是我的脚本试用来给C++调用的。 脚本里俩函数不是让他们自执行的。
引用 7 楼 turingo 的回复:
试试这样加第三方库: PyRun_SimpleString("import sys") PyRun_SimpleString("sys.path.append('./')") [quote=引用 楼主 mymixing 的回复:] 现在工程里使用了python脚本。 脚本中使用了非python标准库。 现在的问题是,在我机器上单独运行这个脚本是可行的。 但是使用可执行文件调用这个脚本,就会提示找不到那个非标准库库的模块。 请教下,怎么破。
[/quote] 你这个应该靠谱,不过还是不知道该怎么写。 python的导入代码
from PIL import Image
我PIL的安装目录C:\Python27\Lib\site-packages\PIL 刚直接在C++中这样用
PyRun_SimpleString("from PIL import Image");
PyRun_SimpleString("sys.path.append('C:\Python27\Lib\site-packages\PIL')");
python报错了
图灵狗 2013-12-17
  • 打赏
  • 举报
回复
试试这样加第三方库: PyRun_SimpleString("import sys") PyRun_SimpleString("sys.path.append('./')")
引用 楼主 mymixing 的回复:
现在工程里使用了python脚本。 脚本中使用了非python标准库。 现在的问题是,在我机器上单独运行这个脚本是可行的。 但是使用可执行文件调用这个脚本,就会提示找不到那个非标准库库的模块。 请教下,怎么破。
赵4老师 2013-12-17
  • 打赏
  • 举报
回复
或者 system("cd /d XXX.py所在目录&python.exe XXX.py");
赵4老师 2013-12-17
  • 打赏
  • 举报
回复
可执行文件调用脚本的方法有问题。应该类似 system("python.exe XXX.py"); 这样调用吧。
Enter空格 2013-12-17
  • 打赏
  • 举报
回复
引用 3 楼 lile1234_show 的回复:
import image 是python的第三方库 ,安装了?
唉,能把我的问题看全么? 没有安装的话,我机器能运行这段脚本么? 现在是直接运行脚本是好使的, 但是写的可执行文件调用这个脚本中image相关函数的话, 就会异常,提示找不到image C库。
lee_鹿游原 2013-12-17
  • 打赏
  • 举报
回复
引用 2 楼 mymixing 的回复:
这不是python代码的问题。 python脚本直接执行时好使的。 现在是C++调用python,脚本里有个import image,这个模块找不到。 只发生在可执行文件调用脚本的时候。
import image 是python的第三方库 ,安装了?
Enter空格 2013-12-17
  • 打赏
  • 举报
回复
这不是python代码的问题。 python脚本直接执行时好使的。 现在是C++调用python,脚本里有个import image,这个模块找不到。 只发生在可执行文件调用脚本的时候。
加载更多回复(1)

64,667

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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