我正在尝试在Windows上使用hg-git Mercurial扩展(Windows 7 64位,具体而言).我安装了Mercurial和Git.我安装了Python 2.5(32位).
我按照http://hg-git.github.com/上的说明安装了扩展程序.最初的easy_install失败,因为没有Visual Studio 2003它无法编译dulwich.
我手动安装了德威:
现在当我运行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可以找到它.我该怎么处理这些信息?
我需要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)
我怀疑有一些方法我忽略了.建议?
我做了这样的配置:
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中连接起来并不明显
以下代码无法编译,产生"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) 我无法弄清楚编码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)