我正在重新构建基于the wonderful Waf tool的构建脚本(我确实使用了SCons很长时间,但它只是方式太慢)。
无论如何,我遇到了以下情况,我无法找到解决方案:
这听起来很简单:你弄清楚PYTHONPATH
应该是什么,构造sys.environ
的副本正确设置变量,然后使用subprocess.Popen
调用PyInstaller脚本传递先前配置的环境作为env论证。
问题是,如果要添加的鸡蛋是打包为zipsafe的扩展模块,单独设置PYTHONPATH
似乎不够。在这种情况下,事实证明无法导入嵌入式库。
如果我解压缩鸡蛋(将目录重命名为.egg),我可以在没有进一步设置的情况下导入它们,但在这种情况下这不是我想要的。
我还可以通过执行以下操作从子shell中导入鸡蛋:
PYTHONPATH
设置为包含要导入的蛋的目录(不是蛋本身的路径)pkg_resources.require
找到鸡蛋。 一旦完成,鸡蛋就会正常加载。同样,这是不实际的,因为我需要能够以一种准备从关闭导入这些蛋的方式运行我的python shell。
脏选项是输出一个包装脚本,在调用真正的目标脚本之前采取了上述操作,但这似乎是错误的做法:必须有更好的方法来做到这一点。
答案 0 :(得分:3)
zipsafe
标志设置为False,这似乎会影响您根本无法对其进行处理。
现在我已将其设置为True我可以导入egg文件,只需将每个文件添加到PYTHONPATH
即可。
我希望其他人有一天能找到这个答案!
答案 1 :(得分:1)
虽然你有一个解决方案,你总是可以尝试“virtualenv”创建一个python的虚拟环境,你可以在这里安装和测试Python包而不会搞乱核心系统python: