char pycmd[1000]; // temporary buffer for forged Python script lines
...
Py_NoSiteFlag=1;
Py_SetProgramName(argv[0]);
Py_SetPythonHome(directoryWhereMyOwnPythonScriptsReside);
Py_InitializeEx(0);
// forge Python command to set the lookup path
// add the zipped Python distribution library to the search path as well
snprintf(
pycmd,
sizeof(pycmd),
"import sys; sys.path = ['%s/pylib-2.6.4.zip','%s']",
applicationDirectory,
directoryWhereMyOwnPythonScriptsReside
);
// ... and execute
PyRun_SimpleString(pycmd);
// now all succeeding Python import calls should be able to
// find the other modules, especially those in the zipped library
...
7条答案
按热度按时间hgb9j2n61#
你看过Python的官方文档吗:是吗?
IBM也提供了一个非常好的PDF文件:是的。
您应该能够使用这两种资源做您想做的事情。
des4xlb02#
我只是在一台没有安装Python的计算机上测试了我的可执行文件,它工作正常。
当你将Python链接到你的可执行文件时(无论是动态的还是静态的),你的可执行文件已经获得了基本的Python语言功能(运算符、方法、基本结构,如字符串、列表、元组、字典等),而没有任何其他依赖性。
然后我让Python的setup.py通过
python setup.py sdist --format=zip
编译一个Python源代码发行版,它给了我一个ZIP文件,我命名为pylib-2.6.4.zip
。我的进一步措施是:
llycmphe3#
你看过Portable Python了吗?不需要安装任何东西。只要复制包含的文件就可以使用解释器。
编辑:这是仅限Windows的解决方案。
7xllpg7q4#
你看过Python文档中的Embedding Python in Another Application吗?
一旦你有了这个,你就可以使用import钩子(参见PEP 302)让你的嵌入式Python代码从你选择的任何地方加载模块。
sdnqo3pr5#
我想这就是你想要的答案Unable to get python embedded to work with zip'd library
基本上,您需要:
在您的c/c++代码中加载python标准库。
在
python27.zip
中,所有.py
源代码都位于python27.zip/Lib
,如sys.path
变量所述。希望这对你有帮助。
o8x7eapl6#
有一个叫py 2 exe的程序。我不知道它是否只在Windows上可用。而且,我使用的最新版本没有把所有东西都打包到一个.exe文件中。它会创建一堆必须分发的东西--一个zip文件等等。
cbwuti447#
您可以使用pyinstaller编译为一个.exe文件