小编Jos*_*gan的帖子

如何正确安装dulwich以使hg-git在Windows上运行?

我正在尝试在Windows上使用hg-git Mercurial扩展(Windows 7 64位,具体而言).我安装了Mercurial和Git.我安装了Python 2.5(32位).

我按照http://hg-git.github.com/上的说明安装了扩展程序.最初的easy_install失败,因为没有Visual Studio 2003它无法编译dulwich.

我手动安装了德威:

  • git clone git://git.samba.org/jelmer/dulwich.git
  • cd dulwich
  • c:\ Python25\python setup.py --pure install

现在当我运行easy_install hg-git时,它会成功(因为dulwich依赖性得到满足).

在我的C:\ Users\username\Mercurial.ini中,我有:

[extensions]
hgext.bookmarks =
hggit =
Run Code Online (Sandbox Code Playgroud)

当我在命令提示符下键入'hg'时,我看到:"***无法导入扩展名hggit:没有名为hggit的模块"

在我的c:\ Python25文件夹下查看,我看到的对hggit的唯一引用是Lib\site-packages\hg_git-0.2.1-py2.5.egg.这应该被提取到某个地方,还是应该按原样运行?

由于失败了,我尝试了hg-git页面中的"更多参与"指令,建议克隆git://github.com/schacon/hg-git.git并引用我的Mercurial配置中的路径.我克隆了repo,并将我的扩展文件更改为:

[extensions]
hgext.bookmarks =
hggit = c:\code\hg-git\hggit
Run Code Online (Sandbox Code Playgroud)

现在当我运行hg时,我看到:***无法从c:\ code\hg-git\hggit导入扩展名hggit:没有名为dulwich.errors的模块.

好的,所以这告诉我它现在正在寻找hggit,因为我可以在hg-git\hggit\git_handler.py中看到它调用

from dulwich.errors import HangupException
Run Code Online (Sandbox Code Playgroud)

这让我觉得dulwich没有正确安装,或者没有安装在路径中.

更新:

从Python命令行:

import dulwich
Run Code Online (Sandbox Code Playgroud)

产量 Import Error: No module named dulwich

但是,在C:\ Python25\Lib\site-packages下,我有一个似乎已填充的dulwich-0.5.0-py2.5.egg文件夹.这是由上述步骤创建的.我需要采取额外的步骤使其成为Python"路径"的一部分吗?

从Python命令行(如其中一个答案中所建议的):

import pkg_resources
pkg_resources.require('dulwich')
Run Code Online (Sandbox Code Playgroud)

产量 [dulwich 0.5.0 (c:\python25\lib\site-packages\dulwich-0.5.0-py2.5.egg)]

那告诉我什么呢?导入dulwich失败,但显然pkg_resources可以找到它.我该怎么处理这些信息?

python windows mercurial hg-git dulwich

52
推荐指数
3
解决办法
1万
查看次数

如何获取字符串中所有Ruby正则表达式的匹配数据?

我需要MatchData在字符串中每次出现正则表达式.这与Regex的Match All Occurrences中建议的扫描方法不同,因为它只给我一个字符串数组(我需要完整的MatchData,以获取开始和结束信息等).

input = "abc12def34ghijklmno567pqrs"
numbers = /\d+/

numbers.match input # #<MatchData "12"> (only the first match)
input.scan numbers  # ["12", "34", "567"] (all matches, but only the strings)
Run Code Online (Sandbox Code Playgroud)

我怀疑有一些方法我忽略了.建议?

ruby regex

42
推荐指数
3
解决办法
2万
查看次数

StructureMap,使用container或objectfactory配置?

我做了这样的配置:

var container = new Container(x =>
                                              {
                                                  x.For<IEngine>().Use<V6Engine>();
                                                  x.For<ICar>().Use<HondaCar>();
                                              }
);
Run Code Online (Sandbox Code Playgroud)

然后在我的mvc控制器动作中我做了:

ICar car = ObjectFactory.GetInstance<ICar>();
Run Code Online (Sandbox Code Playgroud)

我应该以某种方式使用Container或ObjectFactory设置我的容器吗?它没有解决,所以我在ac#console应用程序中测试了一些东西,如果我这样做的话它会起作用:

ICar car = container.GetInstance<ICar>();
Run Code Online (Sandbox Code Playgroud)

但这仅在容器位于本地范围内时才有效,而在Web应用程序中,由于事物在global.asax.cs中连接起来并不明显

c# structuremap

6
推荐指数
1
解决办法
8836
查看次数

为什么在构造函数中具有可选参数的类不满足new()泛型约束?

以下代码无法编译,产生"Widget必须是具有公共无参数构造函数的非抽象类型"错误.我认为编译器具有它需要的所有信息.这是一个错误吗?疏忽?或者是否存在某些无效的情况?

public class Factory<T> where T : new()
{
    public T Build()
    {
        return new T();
    }
}

public class Widget
{
    public Widget(string name = "foo")
    {
        Name = name;
    }

    public string Name { get; set; }
}

public class Program
{
    public static void Main()
    {
        var widget = new Widget(); // this is valid
        var factory = new Factory<Widget>(); // compiler error
    }
}
Run Code Online (Sandbox Code Playgroud)

generics optional-parameters c#-4.0

5
推荐指数
1
解决办法
512
查看次数

如何在Windows上从Ruby运行非ASCII / Unicode Shell命令?

我无法弄清楚编码shell命令以在Windows上从Ruby运行的正确方法。以下脚本重现了该问题:

# encoding: utf-8

def test(word)
  returned = `echo #{word}`.chomp
  puts "#{word} == #{returned}"
  raise "Cannot roundtrip #{word}" unless word == returned
end

test "good"

test "bÃd"

puts "Success"

# win7, cmd.exe font set to Lucinda Console, chcp 65001
# good == good
# bÃd == bÃd
Run Code Online (Sandbox Code Playgroud)

这是Ruby中的错误,还是在将命令字符串传递给cmd.exe进程之前需要手动将其编码为特定的编码?

更新:我想说清楚,问题不在于将输出读回Ruby,而仅仅是将命令发送到shell。展示:

# encoding: utf-8

File.open("bbbÃd.txt", "w") do |f|
  f.puts "nothing to see here"
end

filename = Dir.glob("bbb*.txt").first
command = "attrib #{filename}"

puts command.encoding

puts "#{filename} exists?: #{ File.exists?(filename) }"
system command …
Run Code Online (Sandbox Code Playgroud)

ruby unicode character-encoding

5
推荐指数
1
解决办法
935
查看次数