fabric(http://docs.fabfile.org/en/1.7/)是否支持Python 3。根据Python 3 Wall of Superpowers它还没有。如果不是,如果在Python 3中使用Django 1.5,那么最佳选择是什么。
Current Answer已经由@ miso.belica完成
pip install -U "fabric>2.0.0"
旧答案(截至2013年)
来自文档:
请注意,所有文档目前都是以Python 2.5用户编写的,但着眼于最终的Python 3.x兼容性
或者更具体:
最终的Python 3.x兼容性
看起来Python3对Fabric的支持有点粘,依赖于另一个开源库,paramiko
与python3兼容。截至目前,主版本支持python 3。
可能值得搞乱,然后在其上构建您的结构实例,而不是从pip获取它。
似乎有一个名为Fabric3的Fabric的Python3端口支持Python 2.7和3.4+(不再支持Python <2.7)。我用一段时间作为替代品,它对我没有任何问题。
pip3 install fabric3
似乎已经有官方support for Python 3.4+ in Fabric v2+,我想it should be preferred虽然可能有一些incompatible changes。所以在一个理想的世界里,没有人应该再遇到这个问题:)
pip3 install -U fabric
您还可以为fabric创建一个单独的python2.7 virtualenv:
sudo virtualenv --no-site-packages -p /usr/bin/python fabric-env
source /var/www/APPNAME/fabric-env/bin/activate
sudo /var/www/APPNAME/fabric-env/bin/pip install fabric
deactivate
然后:
/var/www/APPNAME/fabric-env/bin/fab -f /var/www/APPNAME/fabfile.py FAB_COMMAND
似乎Fabric正在进行重写,而Fabric 2.0将与python 3.x兼容。至少这是我在下面的路线图之间读到的内容。但是,我找不到Fabric 2.0存储库或分支,因此,很难完全确认。
实际上可以让Fabric
与Python 3一起工作。你可以看看我是如何在this gist中完成的。
在上面的评论中,@ rnevius建议invoke是Fabric 1.x的继承者,但这并不完全正确。从调用文档:
因此,创建Invoke以专注于本地和抽象问题,使Fabric 2.x仅关注服务器和网络命令。
因此,似乎Fabric 2.x
将建立在invoke
之上。希望Fabric 2.x
即将推出,因此Python2可以尽快消亡。
到今天,“面料2”可用于python 3+。
“面料3”是非正式的叉子。
要从https://pypi.org/project/Fabric/安装“fabric 2”:
pip install Fabric