python – 如何在生成的生成脚本前添加路径
zc.buildout使用zc.recipe.egg在我们的< package> / bin /目录中生成的脚本如下所示:
#! <python shebang> -S import sys sys.path[0:0] = [ ... # some paths derived from the eggs ... # some other paths included with zc.recipe.egg `extra-path` ] # some user initialization code from zc.recipe.egg `initialization` # import function,call function 我无法找到一种方法以编程方式在每个脚本中引入的sys.path构造中添加路径.这可能吗? 原因:我在全局安装了我的python项目版本,并在本地安装了另一个版本(off-buildout tree).我希望能够在这两个版本之间切换. 注意:显然,可以使用zc.recipe.egg / initialization属性添加如下内容: initialization = sys.path[0:0] = [ /add/path/to/my/eggs ] 但是,还有其他方法吗?额外的一点是一个例子! 解决方法
最后,通过创建我自己的buildout配方,我可以在这里找到一个工作环境:
https://github.com/idiap/local.bob.recipe.包含配方的文件是这一个:
https://github.com/idiap/local.bob.recipe/blob/master/config.py.在类构造函数中有许多特定于我们软件的检查和一些额外的改进,但不要为此烦恼. “real meat(TM)”位于该类的install()方法中.它或多或少都是这样的:
egg_link = os.path.join(self.buildout['buildout']['eggs-directory'],'external-package.egg-link') f = open(egg_link,'wt') f.write(self.options['install-directory'] + 'n') f.close() self.options.created(egg_link) return self.options.created() 这样就可以了.我的外部(基于CMake)包现在只需要与它构建的python包并行创建正确的.egg-info文件.我可以使用上面的配方,使用这样的特定包安装: [buildout] parts = external_package python develop = . eggs = my_project external_package recipe.as.above [external_package] recipe = recipe.as.above:config install-directory = ../path/to/my/local/package/build [python] recipe = zc.recipe.egg interpreter = python eggs = ${buildout:eggs} 如果要切换安装,只需更改上面的install-directory属性即可.如果您希望使用系统范围内的默认安装,只需从buildout.cfg文件中完全删除recipe.as.above结构. Buildout只会找到全局安装,无需任何额外配置.卸载也可以正常工作.因此,在构建之间切换将起作用. 这是我们在这里使用的完全工作的buildout .cfg文件:https://github.com/idiap/bob.project.example/blob/master/localbob.cfg 问题是:是否有更简单的方法来实现相同的外部配方? (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |