我正在尝试使用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.
谷歌search给了我一个想法,这可能是Pythonsubprocess中的PATH
variables的一个问题,例如这里: 为什么只有当一个窗口填充时,“命令不被识别”的错误发生? 。
你能帮我吗? 织物或我自己的代码中的错误?
谢谢。
正如克里斯R所提到的,我们不会做大量的Windows支持,因为没有任何核心开发者是Windows用户; 我们必须依赖更多精明的Windows用户的报告和建议。
这听起来可能与这个最近修复但未发布的bug有关 – 它将在Fabric 1.0.2中出现,应该很快出来。 如果你感觉很勇敢,现在可以通过以下方式进行测试:
pip install -e git+git://github.com/bitprophet/fabric@1.0#egg=Fabric
如果你接着做了fab -V
,那么应该说它是1.0.2a – 如果是这样的话,运行你的fabfile可能会更好。 请让我们知道,如果你这样做!
这听起来像你需要将Mercurial添加到Fabric进程的PATH
。
也许是这样的:
fabric.context_managers.path(<path to your hg.exe>) run('hg push')
请参阅路径上下文管理器的文档。 目前还不清楚path
适用于local
命令,但run
命令是明确引用的。
提供的修复程序都没有工作,但正在改变
local("hg push")
至
os.system("hg push")
解决了这个问题。