Ale*_*ten 6 python zip py2exe cython visual-c++
我可以通过在扩展sys.path以包含zip文件之后从Python解释器调用"import some_module"从zip文件加载Python模块(.py,.pyc,.pyd)并且仅在我运行之后
import zipextimporter
zipextimporter.install()
Run Code Online (Sandbox Code Playgroud)
后者是.pyd模块所必需的.
我还可以从嵌入在C++中的Python加载Python .py和.pyc模块.但是,为了从嵌入式Python中加载.pyd模块,我添加了
PyRun_SimpleString("import zipextimporter");
Run Code Online (Sandbox Code Playgroud)
C++ exe超出此行而没有错误.但是下一个命令
PyRun_SimpleString("zipextimporter.install()");
Run Code Online (Sandbox Code Playgroud)
给我这个错误:

嵌入Python时为什么zipextimporter.install()会崩溃?
我怎么解决这个问题?
它可能与编译C++代码的方式有关吗?我用g ++:
g++ embed-simple.cpp -IE:\Python27\include -LE:\Python27\libs -lpython27 -o embed-simple
我看到一个链接 如何链接msvcr90.dll与mingw gcc?
这能提供解决方案吗?如果是的话,我应该如何调整它,gcc - > g ++,因为我正在运行C++代码,而不是C.
我在WinXP上运行Python 2.7.2.
在干净安装Python 2.7.2后,我没有得到运行时错误,只是这样:
导入错误:没有名为....的模块
嵌入C++脚本的编译方式是否重要?我用过g ++.我也用英特尔编译器编译,但是给出了相同的运行时错误.也许我应该尝试MS Visual C++.
或者使用ctypes导入pyd?
memimporter和zipextimporter确实能够从内存/ zip-archives中加载.pyd文件,而无需将它们解压缩到文件中.
runtimerror R6034是由必须通过清单加载VC9运行时库引起的.在Python 2.5中运行代码,使用不同的C运行时,很可能会成功.我想你必须在你的exe中嵌入一个引用VC9运行时库的清单; 也许py2exe wiki可以提供一些指导.
PYD 文件是具有重命名扩展名的本机 DLL 文件。加载它们依赖于操作系统设施和操作系统限制。
Windows XP 或据我所知的任何操作系统都无法从 ZIP 文件加载 DLL 文件,因此您无法从 ZIP 文件加载 PYD 文件。
| 归档时间: |
|
| 查看次数: |
3122 次 |
| 最近记录: |