首页 / PYTHON / 第二个python执行失败
第二个python执行失败
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了第二个python执行失败,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1577字,纯文字阅读大概需要3分钟。
内容图文
![第二个python执行失败](/upload/InfoBanner/zyjiaocheng/777/a1979b8830b24bce83be122d35c2844e.jpg)
我在为需要在python中运行自定义脚本的应用程序嵌入python 3引擎时遇到问题.由于脚本可能完全不同,有时提供用户,因此我尝试将每个执行隔离,并且不需要在执行不同脚本之间保留任何数据.
所以,我的解决方案是在Py_Initialize和Py_Finalize之间包装每个执行.看起来像这样:
void ExecuteScript(const char* script)
{
Py_Initialize();
PyRun_SimpleString( script );
Py_Finalize();
}
但是,对于特定的python脚本,第二次执行脚本时失败:
done!
Traceback (most recent call last):
File "<string>", line 8, in <module>
File "\Python33Test\Output\Debug\Python33\Lib\copy.py", line 89, in copy
rv = reductor(2)
TypeError: attribute of type 'NoneType' is not callable
python脚本如下所示:
class Data:
value1 = 'hello'
value2 = 0
import copy
d = Data()
dd = copy.copy( d )
print ( 'done!' )
正如您所看到的,第一次围绕脚本执行了“完成!”被打印出来了.但第二次它在复制函数内引发异常.
在第一次初始化完成后,看起来python引擎处于某种奇怪的状态.注意,这是python 3.
另外,值得注意的是Python 2.7没有这个问题.
我想可能还有其他一些例子可以更好地揭示发生了什么,但我还没有时间去寻找.
可在此处找到测试项目的完整来源:
https://docs.google.com/file/d/0B86-G0mwwxZvNGpoM1Jia3E2Wmc/edit?usp=sharing
注意,该文件是8MB,因为它包含python发行版.
如何解决这个问题的任何想法都值得赞赏.
编辑:我还把包含标志的项目的副本放在Python 3和Python 2.7之间切换(文件是31 MB):https://docs.google.com/file/d/0B86-G0mwwxZvbWRldTd5b2NNMWM/edit?usp=sharing
编辑:嗯,我测试了Python3.2,它工作正常.所以它似乎只是Python3.3中的错误.添加为问题:http://bugs.python.org/issue17408#
解决方法:
嗯,这很快.
他们实际上发现这个问题在Python 3.3代码中存在问题.
http://bugs.python.org/issue17408#
内容总结
以上是互联网集市为您收集整理的第二个python执行失败全部内容,希望文章能够帮你解决第二个python执行失败所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。