关于嵌入python 和脚本打包

wangdali 2007-07-12 04:45:35
这几天一直遇到这两个问题:
查了好基本书还有官方文档以及Google.com 都没能解决, 所以想向前辈们请教,还望能解答,先谢了.
一、我的脚本想放在一个目录中,然后将这些脚本全部打包成zip文件,但不知道如何打包已经在脚本程序或嵌入程序中怎么调用这个zip包中的模块?忘能给出代码。我是想以后程序可以直接用这个zip就能读到里面的模块,而不是为了发布安装python脚本库。 就类似于java中的jar那样的效果。

二、因为我把脚本放在一个目录中,例如:

Script <dir>
|
- Module <dir>
|
- Startup.py

我知道如何在脚本中去调用这个Startup.py 模块(from Script.Module import Startup),但是不知道如何在嵌入程序中调用这个模块,一直都没能找到设置模块搜索路径的函数,好像只有察看的函数 Py_GetPath(), 可惜没有Py_SetPath() ,问题是不知道如何在嵌入程序中调用目录下的木块,以及是否有设置搜索路径的函数?

等待前辈们的回答,谢谢。
...全文
264 点赞 收藏 9
写回复
9 条回复
wangdali 2007年07月18日
郁闷,结帖出错, 然后再次进入管理 分数已经分配 但是不能在进行结帖操作.
回复 点赞
wangdali 2007年07月18日
Py_Initialize(); // 初始化Python
PySys_SetPath("e:\\Script.zip"); // 设置Python库的路径
Py_Finalize(); // 关闭Python

我是这样用的, 可以成功调用到e:\\Script.zip中的脚本.
谢谢xyzxyz1111(挥泪处理大量显示器及主机)

结帖了.
回复 点赞
wangdali 2007年07月18日
我用了下面两个设置变量的方法都没办法使用,您说提的那个setenv()我不知道在哪个系统的头文件中, 引用为未定义字符. 可以肯定下面的路径没有问题, 我在"我的电脑"中设置"环境"可以正常使用. 不知道为什么? 我在继续找解决方法, 找到后就可以结帖了.

LPCTSTR PythonPath = L"PYTHONPATH";
LPCTSTR PathValue = L"e:\\Script.zip";
bool test = false;
int test2;
test = SetEnvironmentVariable(PythonPath, PathValue);
test2=_putenv("PYTHONPATH = e:\\Script.zip");
回复 点赞
xyzxyz1111 2007年07月16日
这样行不?
PyImport_ImportModule("Script.Module.Startup");

好像Script目录和Module目录下面都需要有个__init__.py文件
回复 点赞
wangdali 2007年07月16日
经过这么多天,这个问题就没有人可以回答???
回复 点赞
xyzxyz1111 2007年07月16日
用C函数
setenv("PYTHONPATH", "/path/to/your.zip");
试试看
回复 点赞
wangdali 2007年07月16日
我是想在嵌入程序中调用这个your.zip? 应该用那个函数?
回复 点赞
xyzxyz1111 2007年07月16日
按打包成zip就可以
然后用sys.path.append("your.zip") 或者将zip文件的路径添加环境变量PYTHONPATH中.
回复 点赞
wangdali 2007年07月16日
是的,我找到原因了,这个方法是可以用的.
原因是我的注释中含有中文,导致出错,并不是我调用出错.
郁闷.
不知道你会不会做模块的封包, 类似于java的 jar文件格式.
我知道,python系统会默认加载 执行程序路径下的 python25.zip 文件, 但我不想用这个名字,是否可以做到.
回复 点赞
发动态
发帖子
脚本语言(Perl/Python)
创建于2007-08-27

1.5w+

社区成员

3.3w+

社区内容

其他开发语言 脚本语言(Perl ,Python)
社区公告
暂无公告