2022年10月

安装 Arch Linux 有一些挑战性。这就是为什么 有几个基于 Arch 的发行版 通过提供图形化的安装程序使事情变得简单。

即使你设法安装了 Arch Linux,你也会注意到它严重依赖命令行。如果你需要安装应用或更新系统,那么必须打开终端。

是的!Arch Linux 没有软件中心。我知道,这让很多人感到震惊。

如果你对使用命令行管理应用感到不舒服,你可以安装一个 GUI 工具。这有助于在舒适的图形化界面中搜索包以及安装和删除它们。

想知道你应该使用 pacman 命令 的哪个图形前端?我有一些建议可以帮助你。

请注意,某些软件管理器是特定于桌面环境的。

1、Apper

使用 Apper 安装 Firefox

Apper 是一个精简的 Qt5 应用,它使用 PackageKit 进行包管理,它还支持 AppStream 和自动更新。但是,没有 AUR 支持

要从官方仓库安装它,请使用以下命令:

sudo pacman -Syu apper
GitLab 上的 Apper

2、深度应用商店

使用深度应用商店安装 Firefox

深度应用商店是使用 DTK(QT5)构建的深度桌面环境的应用商店,它使用 PackageKit 进行包管理,支持 AppStream,同时提供系统更新通知。 没有 AUR 支持

要安装它,请使用以下命令:

sudo pacman -Syu deepin-store
Github 上的深度商店

3、KDE 发现应用

使用 Discover 安装 Firefox

发现 Discover 应用不需要为 KDE Plasma 用户介绍。它是一个使用 PackageKit 的基于 Qt 的应用管理器,支持 AppStream、Flatpak 和固件更新。

要在发现应用中安装 Flatpak 和固件更新,需要分别安装 flatpakfwupd 包。它没有 AUR 支持。

sudo pacman -Syu discover packagekit-qt5
GitLab 上的 Discover

4、GNOME PackageKit

Installing Firefox using GNOME PackageKit

GNOME PackageKit 是一个使用 PackageKit 技术的 GTK3 包管理器,支持 AppStream。不幸的是,没有 AUR 支持

要从官方仓库安装它,请使用以下命令:

sudo pacman -Syu gnome-packagekit
freedesktop 上的 PackageKit

5、GNOME 软件应用

Installing Firefox using GNOME Software

GNOME 软件 Software 应用不需要向 GNOME 桌面用户介绍。它是使用 PackageKit 技术的 GTK4 应用管理器,支持 AppStream、Flatpak 和固件更新。

它没有 AUR 支持。要安装来自 GNOME 软件应用的 Flatpak 和固件更新,需要分别安装 flatpakfwupd 包。

安装它使用:

sudo pacman -Syu gnome-software-packagekit-plugin gnome-software
GitLab 上的 GNOME 软件

6、tkPacman

使用 tkPacman 安装 Firefox

它是用 Tcl 编写的 Tk pacman 封装。界面类似于 Synaptic 包管理器

由于没有 GTK/Qt 依赖,它非常轻量级,因为它使用 Tcl/Tk GUI 工具包。

它不支持 AUR,这很讽刺,因为你需要从 AUR 安装它。你需要事先安装一个 AUR 助手,如 yay。

yay -Syu tkpacman
Sourceforge 上的 tkPacman

7、Octopi

使用 Octopi 安装 Firefox

可以认为它是 tkPacman 的更好看的表亲。它使用 Qt5 和 Alpm,还支持 Appstream 和 AUR(通过 yay)

你还可以获得桌面通知、仓库编辑器和缓存清理器。它的界面类似于 Synaptic 包管理器。

要从 AUR 安装它,请使用以下命令。

yay -Syu octopi
GitHub 上的 Octopi

8、Pamac

使用 Pamac 安装 Firefox

Pamac 是 Manjaro Linux 的图形包管理器。它基于 GTK3 和 Alpm,支持 AUR、Appstream、Flatpak 和 Snap

Pamac 还支持自动下载更新和降级软件包。

它是 Arch Linux 衍生版中使用最广泛的应用。但因为 DDoS AUR 网页 而臭名昭著。

在 Arch Linux 上安装 Pamac 有几种方法。最简单的方法是使用 AUR 助手。

yay -Syu pamac-aur
GitLab 上的 Pamac

总结

要删除任何上面图形化包管理器以及依赖项和配置文件,请使用以下命令将 packagename 替换为要删除的包的名称。

sudo pacman -Rns packagename

这样看来,Arch Linux 也可以在不接触终端的情况下使用合适的工具。

还有一些其他应用程序也使用终端用户界面(TUI)。一些例子是 pcursescylonpacseekyup。但是,这篇文章只讨论那些有适当的 GUI 的软件。

注意: PackageKit 默认打开系统权限,因而 不推荐 用于一般用途。因为如果用户属于 wheel 组,更新或安装任何软件都不需要密码。

你看到了在 Arch Linux 上使用图形化软件中心的几种选择。现在是时候决定使用其中一个了。你会选择哪一个?Pamac 或 OctoPi 还是其他?现在就在下面留言吧


via: https://itsfoss.com/arch-linux-gui-package-managers/

作者:Anuj Sharma 选题:lkxed 译者:geekpi 校对:wxy

本文由 LCTT 原创编译,Linux 中国 荣誉推出

不要做重复的工作;基于浏览器开发 Web App 时,需要制作一些可重用的模块。

 title=

Web 组件是一系列开源技术(例如 JavaScript 和 HTML)的集合,你可以用它们创建一些 Web App 中可重用的自定义元素。你创建的组件是独立于其他代码的,所以这些组件可以方便地在多个项目中重用。

首先,它是一个平台标准,所有主流的浏览器都支持它。

Web 组件中包含什么?

  • 定制元素:JavaScript API 支持定义 HTML 元素的新类别。
  • 影子 DOM:JavaScript API 提供了一种将一个隐藏的、独立的 文档对象模型(DOM)附加到一个元素的方法。它通过保留从页面的其他代码分离出来的样式、标记结构和行为特征对 Web 组件进行了封装。它会确保 Web 组件内样式不会被外部样式覆盖,反之亦然,Web 组件内样式也不会“泄露”到页面的其他部分。
  • HTML 模板:该元素支持定义可重用的 DOM 元素。可重用 DOM 元素和它的内容不会呈现在 DOM 内,但仍然可以通过 JavaScript 被引用。

开发你的第一个 Web 组件

你可以借助你最喜欢的文本编辑器和 JavaScript 写一个简单的 Web 组件。本指南使用 Bootstrap 生成简单的样式,并创建一个简易的卡片式的 Web 组件,给定了位置信息,该组件就能显示该位置的温度。该组件使用了 Open Weather API,你需要先注册,然后创建 APPID/APIKey,才能正常使用。

调用该组件,需要给出位置的经度和纬度:

<weather-card longitude='85.8245' latitude='20.296' />

创建一个名为 weather-card.js 的文件,这个文件包含 Web 组件的所有代码。首先,需要定义你的组件,创建一个模板元素,并在其中加入一些简单的 HTML 标签:

const template = document.createElement('template');

template.innerHTML = `
  <div class="card">
    <div class="card-body"></div>
  </div>
`

定义 Web 组件的类及其构造函数:

class WeatherCard extends HTMLElement {
  constructor() {
    super();
    this._shadowRoot = this.attachShadow({ 'mode': 'open' });
    this._shadowRoot.appendChild(template.content.cloneNode(true));
  }
  ......
}

构造函数中,附加了 shadowRoot 属性,并将它设置为开启模式。然后这个模板就包含了 shadowRoot 属性。

接着,编写获取属性的函数。对于经度和纬度,你需要向 Open Weather API 发送 GET 请求。这些功能需要在 connectedCallback 函数中完成。你可以使用 getAttribute 方法访问相应的属性,或定义读取属性的方法,把它们绑定到本对象中。

get longitude() {
  return this.getAttribute('longitude');
}

get latitude() {
  return this.getAttribute('latitude');
}

现在定义 connectedCallBack 方法,它的功能是在需要时获取天气数据:

connectedCallback() {
  var xmlHttp = new XMLHttpRequest();
  const url = `http://api.openweathermap.org/data/2.5/weather?lat=${this.latitude}&lon=${this.longitude}&appid=API_KEY`
  xmlHttp.open("GET", url, false);
  xmlHttp.send(null);
  this.$card = this._shadowRoot.querySelector('.card-body');
  let responseObj = JSON.parse(xmlHttp.responseText);
  let $townName = document.createElement('p');
  $townName.innerHTML = `Town: ${responseObj.name}`;
  this._shadowRoot.appendChild($townName);
  let $temperature = document.createElement('p');
  $temperature.innerHTML = `${parseInt(responseObj.main.temp - 273)} &deg;C`
  this._shadowRoot.appendChild($temperature);
}

一旦获取到天气数据,附加的 HTML 元素就添加进了模板。至此,完成了类的定义。

最后,使用 window.customElements.define 方法定义并注册一个新的自定义元素:

window.customElements.define('weather-card', WeatherCard);

其中,第一个参数是自定义元素的名称,第二个参数是所定义的类。这里是 整个组件代码的链接

你的第一个 Web 组件的代码已完成!现在应该把它放入 DOM。为了把它放入 DOM,你需要在 HTML 文件(index.html)中载入指向 Web 组件的 JavaScript 脚本。

<!DOCTYPE html>
<html>

<head>
  <meta charset="UTF-8">
</head>

<body>
  <weather-card longitude='85.8245' latitude='20.296'/>
  <script src='./weather-card.js'></script>
</body>

</html>

这就是显示在浏览器中的 Web 组件:

 title=

由于 Web 组件中只包含 HTML、CSS 和 JavaScript,它们本来就是浏览器所支持的,并且可以无瑕疵地跟前端框架(例如 React 和 Vue)一同使用。下面这段简单的代码展现的是它跟一个由 Create React App 引导的一个简单的 React App 的整合方法。如果你需要,可以引入前面定义的 weather-card.js,把它作为一个组件使用:

import './App.css';
import './weather-card';

function App() {
  return (
  <weather-card longitude='85.8245' latitude='20.296'></weather-card>
  );
}

export default App;

Web 组件的生命周期

一切组件都遵循从初始化到移除的生命周期法则。每个生命周期事件都有相应的方法,你可以借助这些方法令组件更好地工作。Web 组件的生命周期事件包括:

  • Constructor:Web 组件的构造函数在它被挂载前调用,意味着在元素附加到文档对象前被创建。它用于初始化本地状态、绑定事件处理器以及创建影子 DOM。在构造函数中,必须调用 super(),执行父类的构造函数。
  • ConnectedCallBack:当一个元素被挂载(即,插入 DOM 树)时调用。该函数处理创建 DOM 节点的初始化过程中的相关事宜,大多数情况下用于类似于网络请求的操作。React 开发者可以将它与 componentDidMount 相关联。
  • attributeChangedCallback:这个方法接收三个参数:name, oldValuenewValue。组件的任一属性发生变化,就会执行这个方法。属性由静态 observedAttributes 方法声明:
static get observedAttributes() {
  return ['name', '_id'];
} 

一旦属性名或 _id 改变,就会调用 attributeChangedCallback 方法。

  • DisconnectedCallBack:当一个元素从 DOM 树移除,会执行这个方法。它相当于 React 中的 componentWillUnmount。它可以用于释放不能由垃圾回收机制自动清除的资源,比如 DOM 事件的取消订阅、停用计时器或取消所有已注册的回调方法。
  • AdoptedCallback:每次自定义元素移动到一个新文档时调用。只有在处理 IFrame 时会发生这种情况。

模块化开源

Web 组件对于开发 Web App 很有用。无论你是熟练使用 JavaScript 的老手,还是初学者,无论你的目标客户使用哪种浏览器,借助这种开源标准创建可重用的代码都是一件可以轻松完成的事。

插图:Ramakrishna Pattnaik, CC BY-SA 4.0


via: https://opensource.com/article/21/7/web-components

作者:Ramakrishna Pattnaik 选题:lujun9972 译者:cool-summer-021 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

黑曜石 1.0 做了重新设计,带来了有价值的新功能。

类似于 Notion 的 Markdown 笔记软件 Obsidian 推出了测试版

黑曜石 Obsidian 是一款强大的笔记应用,可以用来制作知识图谱,同时还提供 Notion 类似的功能。

在 1.0 更新之前,我们已经有一篇关于它的 详细文章

黑曜石 1.0 的发布标志着该应用在桌面和移动体验方面的发展迈出了关键一步。

? 黑曜石不是一个开源的应用程序,但可以在 Linux 上使用。

让我们来看看它的桌面版提供的新功能。

? 黑曜石 1.0 的新功能

黑曜石 1.0

1.0 版本增加了大量的新功能、主要的视觉变化和错误修复,其中一些亮点包括:

  • 改良的用户界面
  • 新的外观设置
  • 带有标签堆叠的标签功能
  • 大修的主题画廊
  • 各种错误的修复

? 用户界面的改造

黑曜石 1.0 用户界面

用户界面已经得到了全面改造,这使得用户体验更加直观和强大。

黑曜石用户界面

除此之外,黑曜石现在还有一个专门的外观设置部分。它包含了切换显示内联标题、标签标题栏、改变重点颜色等选项的设置。

黑曜石 1.0 外观设置

带有标签堆叠的标签功能

黑曜石 1.0 的标签

现在你可以在黑曜石中打开多个标签,并使用热键来帮助你在忙碌的一天中完成多个任务。

一个额外的好处是,即使你退出黑曜石,它也会记住你曾经打开的标签和你在这些标签中的活动状态。

黑曜石 1.0 的标签堆叠

标签也可以分组形成堆叠,并在它们之间进行切换,从而使工作空间变得更加整齐。

?️ 其他变化

其他值得一提的变化包括:

  • 改变缩放级别的能力
  • 改进了黑曜石的同步
  • 内存泄漏修复
  • 用于折叠行的折叠命令

你可以通过 发布说明,以及 发布公告 来了解更多的细节。

? 下载黑曜石 1.0

你可以到 官方网站 下载黑曜石 1.0。在手机上,也可以在谷歌应用商店和苹果的应用商店上找到它。

为 Linux 用户提供了三个软件包:AppImage、Flatpak 和 Snap

开发者还澄清说,他们不会向个人用户收取黑曜石的使用费。

? 你对黑曜石 1.0 有什么看法?一个值得替代其他记事本的应用程序吗?


via: https://news.itsfoss.com/obsidian-1-release/

作者:Sourav Rudra 选题:lkxed 译者:wxy 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

谷歌宣布推出 Rust 开发的 KataOS 操作系统

谷歌本周宣布发布 KataOS,它是用于进行机器学习的嵌入式设备的操作系统。KataOS 从设计上就具备安全考虑,不但几乎完全是由 Rust 实现的,而且是建立在 seL4 微内核的基础之上,seL4 在数学上被证明是安全的,具有保证保密性、完整性和可用性。

消息来源:谷歌
老王点评:谷歌的操作系统之心不死啊,时不时的就发布一个操作系统,然而,Linux 仍然是谷歌用的做到的操作系统。

谷歌搜索 emoji 相关词汇时会报错

有网友发现,在谷歌上搜索“how many emojis on iOS”、“how many emojis on windows” 等内容时,谷歌搜索引擎会极其罕见的报服务器错误:“处理您的请求时,似乎出现了内部服务器错误”。据分析,这是出现在结果中的一个特定网页可能导致了这个错误,很可能是 Emojipedia.com 网站。谷歌已经修复了该问题。

消息来源:Bleeping Computer
老王点评:这真是太罕见了,我是第一次听说谷歌会因为某个搜索结果而导致服务器内部错误。

Pine64 宣布了一款不到 10 美元的 Linux 单板计算机

这款名为 Ox64 的单板计算机有一个双核 RISC-V 处理器,64MB 的嵌入式内存,支持高达 128Mb 的闪存和一个用于额外存储的 MicroSD 卡。预计它将支持 RTOS 和 Linux,模糊了微控制器和极低功率的单板电脑之间的界限。它预计将在 11 月上市销售,RTOS 版本起价为 6 美元,Linux 兼容型号起价为 8 美元。

消息来源:Pine64
老王点评:这个单板机看起来不错,还挺便宜。

本指南解释了在 Fedora Linux 发行版中启用第三方软件仓库 RPM Fusion 的步骤。

RPM Fusion 软件仓库是一个社区维护的软件仓库,它为 Fedora Linux 提供额外的软件包,这些软件包不是由 Fedora 官方团队分发,例如 DVD 播放、媒体播放、来自 GNOME 和 KDE 的软件等。这是因为许可证、其他法律原因和特定国家/地区的软件规范而导致的。

RPM Fusion 为 Red Hat Enterprise Linux(RHEL)以及 Fedora 提供了 .rpm 包。

本指南介绍了在 Fedora Linux 中启用 RPM Fusion 仓库所需的步骤。本指南适用于所有 Fedora 发行版本。

这在所有当前支持的 Fedora 版本(35、36 和 37)中进行了测试。

RPM Fusion

如何在 Fedora Linux、RHEL、CentOS 中启用 RPM Fusion 仓库

RPM Fusion 有两种版本的仓库:自由和非自由。

顾名思义,自由版包含软件包的自由版本,非自由版包含封闭源代码的编译软件包和“非商业”开源软件。

在继续之前,首先检查你是否安装了 RPM fusion。打开终端并运行以下命令。

dnf repolist | grep rpmfusion

如果安装了 RPM,你应该会看到如下所示的消息。就不用下面的步骤。如果未安装,你可以继续执行以下步骤。

RPM Fusion 已安装

打开终端并根据你的操作系统版本运行以下命令。请注意,这些命令包含自由和非自由版本。如果你愿意,你可以在运行时省略下面的任何一个。

Fedora

自由版:

sudo dnf install https://download1.rpmfusion.org/free/fedora/rpmfusion-free-release-$(rpm -E %fedora).noarch.rpm

非自由版:

sudo dnf install https://download1.rpmfusion.org/nonfree/fedora/rpmfusion-nonfree-release-$(rpm -E %fedora).noarch.rpm

在 Silverblue 上使用 rpm-ostree

自由版:

sudo rpm-ostree install https://download1.rpmfusion.org/free/fedora/rpmfusion-free-release-$(rpm -E %fedora).noarch.rpm

非自由版:

sudo rpm-ostree install https://download1.rpmfusion.org/nonfree/fedora/rpmfusion-nonfree-release-$(rpm -E %fedora).noarch.rpm

RHEL 8

先安装 EPEL:

sudo dnf install --nogpgcheck https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm

自由版:

sudo dnf install --nogpgcheck https://download1.rpmfusion.org/free/el/rpmfusion-free-release-8.noarch.rpm

非自由版:

sudo dnf install --nogpgcheckhttps://download1.rpmfusion.org/nonfree/el/rpmfusion-nonfree-release-8.noarch.rpm

开发相关软件包:

sudo subscription-manager repos --enable "codeready-builder-for-rhel-8-$(uname -m)-rpms"

CentOS 8

先安装 EPEL:

sudo dnf install --nogpgcheck https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm

自由版:

sudo dnf install --nogpgcheck https://download1.rpmfusion.org/free/el/rpmfusion-free-release-8.noarch.rpm

非自由版:

sudo dnf install --nogpgcheckhttps://download1.rpmfusion.org/nonfree/el/rpmfusion-nonfree-release-8.noarch.rpm

启用 PowerTools:

sudo dnf config-manager --enable PowerTools

附加说明

RPM Fusion 还可以帮助用户安装来自 GNOME 软件或 KDE Discover 的软件包。要在 Fedora 中启用它,请运行以下命令:

sudo dnf groupupdate core

你还可以通过以下命令启用 RPM Fusion 来使用 gstreamer 和其他多媒体播放包来播放媒体文件。

sudo dnf groupupdate multimedia --setop="install_weak_deps=False" --exclude=PackageKit-gstreamer-plugin
sudo dnf groupupdate sound-and-video

启用 RPM Fusion 以使用 libdvdcss 播放 DVD。

sudo dnf install rpmfusion-free-release-taintedsudo dnf install libdvdcss

通过以下命令启用 RPM Fusion 以启用非 FLOSS 硬件包。

sudo dnf install rpmfusion-nonfree-release-taintedsudo dnf install *-firmware

运行命令后,如果你使用的是 Fedora 或 CentOS/RHEL,请在重启前运行以下命令。

sudo dnf check-updatesudo dnf update

如何使用 dnf 删除仓库

如果要删除仓库,请按照以下步骤操作。

首先,使用以下命令查看添加到 Fedora 系统的仓库列表。

dnf repolist

dnf 仓库列表

如你所见,添加了 rpmfusion 自由和非自由仓库。要通过 dnf 删除它,你需要使用以下命令准确知道仓库文件名。

rpm -qa 'rpmfusion*'

这将列出仓库的确切名称。在示例中,它们是 “rpmfusion-free-release”。

从 Fedora 中移除 rpmfusion

现在你可以简单地运行以下命令来删除它。

sudo dnf remove rpmfusion-free-release

你可以重复上面的例子从 Fedora 中删除 rpmfusion,也可以使用它从系统中删除任何其他仓库。


via: https://www.debugpoint.com/enable-rpm-fusion-fedora-rhel-centos/

作者:Arindam 选题:lkxed 译者:geekpi 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

充分利用 PyLint。

敲黑板:PyLint 实际上很好!

“PyLint 可以拯救你的生命”,这是一句夸张的描述,但没有你想象的那么夸张。PyLint 可以让你远离非常难找到的和复杂的缺陷。最差的情况下,它只可以节省测试运行的时间。最好的情况下,它可以帮你避免生产环境中复杂的错误。

优点

我不好意思说这种情况是多么普遍。测试的命名总是那么奇怪:没有人关心这个名称,而且通常也找不到一个自然的名称。例如以下代码:

def test_add_small():
    # Math, am I right?
    assert 1 + 1 == 3
    
def test_add_large():
    assert 5 + 6 == 11
    
def test_add_small():
    assert 1 + 10 == 11

测试生效:

collected 2 items                                                                         
test.py .. 
2 passed

但问题是:如果你覆盖了一个测试的名称,测试框架将愉快地跳过这个测试!

实际上,这些文件可能有数百行,而添加新测试的人可能并不知道所有的名称。除非有人仔细查看测试输出,否则一切看起来都很好。

最糟糕的是,被覆盖测试的添加被覆盖测试造成的破坏,以及连锁反应的问题可能要几天、几月甚至几年才能发现。

PyLint 会找到它

就像一个好朋友一样,PyLint 可以帮助你。

test.py:8:0: E0102: function already defined line 1
     (function-redefined)

缺点

就像 90 年代的情景喜剧一样,你对 PyLint 了解的越多,问题就越多。以下是一个库存建模程序的常规代码:

"""Inventory abstractions"""

import attrs

@attrs.define
class Laptop:
    """A laptop"""
    ident: str
    cpu: str

但 PyLint 似乎有自己的观点(可能形成于 90 年代),并且不怕把它们作为事实陈述出来:

$ pylint laptop.py | sed -n '/^laptop/s/[^ ]*: //p'
R0903: Too few public methods (0/2) (too-few-public-methods)

危险

有没有想过在一个数百万人使用的工具中加入自己未证实的观点?PyLint 每月有 1200 万次下载。

“如果太挑剔,人们会取消检查” — 这是 PyLint GitHub 的 6987 号议题,于 2022 年 7 月 3 号提出

对于添加一个可能有许多误报的测试,它的态度是 ... “”。

让它为你工作

PyLint 很好,但你需要小心地与它配合。为了让 PyLint 为你工作,以下是我推荐的三件事:

1、固定版本

固定你使用的 PyLint 版本,避免任何惊喜!

在你的 .toml 文件中定义:

[project.optional-dependencies]
pylint = ["pylint"]

在代码中定义:

from unittest import mock

这与以下代码对应:

# noxfile.py
...
@nox.session(python=VERSIONS[-1])
def refresh_deps(session):
    """Refresh the requirements-*.txt files"""
    session.install("pip-tools")
    for deps in [..., "pylint"]:
        session.run(
            "pip-compile",
            "--extra",
            deps,
            "pyproject.toml",
            "--output-file",
            f"requirements-{deps}.txt",
        )

2、默认禁止

禁用所有检查,然后启用那些你认为误报比率高的。(不仅仅是漏报/误报的比率!)

# noxfile.py
...
@nox.session(python="3.10")
def lint(session):
    files = ["src/", "noxfile.py"]
    session.install("-r", "requirements-pylint.txt")
    session.install("-e", ".")
    session.run(
        "pylint",
        "--disable=all",
        *(f"--enable={checker}" for checker in checkers)
        "src",
    )

3、检查器

以下是我喜欢的检查器。加强项目的一致性,避免一些明显的错误。

checkers = [
    "missing-class-docstring",
    "missing-function-docstring",
    "missing-module-docstring",
    "function-redefined",
]

使用 PyLint

你可以只使用 PyLint 好的部分。在 CI 中运行它以保持一致性,并使用常用检查器。

放弃不好的部分:默认禁止检查器。

避免危险的部分:固定版本以避免意外。


via: https://opensource.com/article/22/9/pylint-good-bad-ugly

作者:Moshe Zadka 选题:lkxed 译者:MjSeven 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出