55

Fabric(http://docs.fabfile.org/en/1.7/)是否支持 Python 3。根据Python 3 Wall of Superpowers,它还没有。如果不是将 Django 1.5 与 Python 3 一起使用,那么最好的选择是什么。

4

7 回答 7

99

当前建议

似乎Fabric v2+ 中已经有对 Python 3.4+ 的官方支持,我想它应该是首选,尽管可能存在一些不兼容的更改。所以在一个理想的世界里,没有人应该再有这个问题了:)

pip3 install -U "fabric>2.0"

在 Python 3 中维护旧 API

因为有些人对 Fabric 的旧 API 感到满意,所以有一个支持 Python 3 的维护分支,称为fab-classic。另请参阅 Github 问题Recreating the Fabric 1 API in Fabric 2? 中的讨论?


之前的忠告

有一个名为Fabric3的 Fabric 的 Python3 端口,它支持 Python 2.7 和 3.4+(放弃对 Python <2.7 的支持)。我用它一段时间作为替代品,它对我有用,没有任何问题。

pip3 install fabric3
于 2016-01-24T10:56:28.060 回答
36

@miso.belica 已经完成的当前答案

pip install -U "fabric>2.0.0"

旧答案(截至 2013 年)

从文档:

请注意,目前所有文档都是为 Python 2.5 用户编写的,但着眼于最终的 Python 3.x 兼容性

或者更具体地说:

最终的 Python 3.x 兼容性

paramiko看起来 Python3 对 Fabric 的支持有点棘手,并且依赖于另一个与 python3 兼容的开源库。截至目前,master版本支持python 3。

可能值得一试,然后在此基础上构建您的结构实例,而不是从 pip 获取它。

于 2013-09-11T19:22:04.013 回答
17

你也可以为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
于 2014-06-19T02:39:49.353 回答
7

似乎 Fabric 正在重写,Fabric 2.0 将与 python 3.x 兼容。至少这是我在下面的路线图行之间读到的。但是,我找不到 Fabric 2.0 存储库或分支,因此很难完全确认。

http://www.fabfile.org/roadmap.html

于 2014-09-29T16:02:32.037 回答
3

对于那些寻找支持的 Fabric 1.x 版本的人,有一个维护的分支: https ://github.com/ploxiln/fab-classic

如果您不想重写所有现有代码,我建议使用它。它适用于 Python 3.7。

我们已经切换fabric3==1.14.post1fab-classic==1.15.2没有任何问题。

于 2020-03-16T18:07:45.013 回答
2

实际上可以Fabric使用 Python 3。你可以在这个 gist中看到我是如何做到的。

在上面的评论中,@rnevius 建议调用是 Fabric 1.x 的继承者,但这并不完全正确。从调用文档:

因此,创建 Invoke 是为了专注于本地和抽象问题,而 Fabric 2.x 只关注服务器和网络命令。

因此,它似乎Fabric 2.x将建立在invoke. 希望Fabric 2.x能尽快推出,这样 Python2 可以尽快消亡。

于 2015-05-02T18:32:00.330 回答
2

到今天为止,“fabric 2”可以与 python 3+ 一起使用。

“fabric 3”是非官方的分叉。

https://pypi.org/project/Fabric/安装“fabric 2” :

pip install Fabric
于 2018-08-02T13:27:28.750 回答