我正在尝试使用Fabric和Mercurial部署我的网站。在Windows命令行中,运行hg push
可以完美地运行,没有任何问题。
但是当我尝试写作时
local("hg push")
在fabfile中运行它,我收到错误:
'"hg push"' is not recognized as an internal or external command, operable program or batch file.
谷歌搜索给了我一个想法,它可能是Python子进程中PATH
变量的问题,例如:Why would an "command not recognized" error occur only when a window is populated?。
感谢。
答案 0 :(得分:1)
正如Chris R所提到的,我们没有大量的Windows支持,因为没有一个核心开发人员是Windows用户;我们必须依赖来自更精明的Windows用户的报告和建议。
听起来这可能与this recently fixed, but not released, bug有关 - 它将在Fabric 1.0.2中出现,很快就应该出来了。如果你有勇气,可以通过以下方式测试:
pip install -e git+git://github.com/bitprophet/fabric@1.0#egg=Fabric
如果你做fab -V
,它应该说它是1.0.2a - 如果是这样的话,运行你的fabfile可能会更好。如果你这样做,请告诉我们!
答案 1 :(得分:0)
听起来你需要将Mercurial添加到Fabric进程的PATH
。
可能是这样的:
fabric.context_managers.path(<path to your hg.exe>)
run('hg push')
查看path context manager的文档。目前尚不清楚path
是否适用于local
命令,但run
命令是明确引用的。
答案 2 :(得分:-2)
所提供的修补程序均无效,但正在更改
local("hg push")
到
os.system("hg push")
解决了这个问题。