出于某种原因,我查看了/usr/bin/hg
并看到了一些奇怪的代码:
libdir = '@LIBDIR@'
if libdir != '@' 'LIBDIR' '@':
...
if语句看起来像一个重言式/矛盾,因为'@LIBDIR@'
在Python中总是等于'@' 'LIBDIR' '@'
,所以代码永远不会运行。 '@LIBDIR@'
在什么条件下变成其他东西?
答案 0 :(得分:3)
我不熟悉Mercurial 本身,,但对我来说@LIBDIR@
显然是要通过自动搜索和替换替换其他字符串,例如在安装脚本中。 if
语句会检查这是否已完成:搜索在@LIBDIR@
中找不到'@' 'LIBDIR' '@'
,因此这是将变量的值与其进行比较的方法原始占位符值,而不会触发if
语句中占位符的替换。
换句话说,if
语句询问“如果在安装时指定了库路径,则验证它并将其添加到Python模块搜索路径。”
我个人将这些信息放在一个配置文件中,因为这对用户来说更容易编辑,并且不太可能被更新破坏,但看起来Mercurial正在使用源代码修改方法来配置。
答案 1 :(得分:2)
setup / hg:始终从安装位置加载Mercurial。
这提供了两个新功能:
- Mercurial可以安装到非标准位置,而无需设置PYTHONPATH。
- 多个安装可以使用来自不同位置的Mercurial。
我想你可以给Dan发电子邮件以获得更详细的答案