加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

python – 如何在生成的生成脚本前添加路径

发布时间:2020-12-20 13:27:39 所属栏目:Python 来源:网络整理
导读:zc.buildout使用zc.recipe.egg在我们的 package / bin /目录中生成的脚本如下所示: #! python shebang -Simport syssys.path[0:0] = [ ... # some paths derived from the eggs ... # some other paths included with zc.recipe.egg `extra-path`]# some us
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

问题是:是否有更简单的方法来实现相同的外部配方?

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读