小编tim*_*ner的帖子

Python 中的 Bleeding Edge/Nightly Build 依赖管理。策略和最佳实践?


情况


您正在开发 2 个软件产品,一个提供 API 的和一个向最终用户公开该库的GUI 工具。此外,您希望您所在的地方有很多技术人员使用该库作为各种相关自定义代码、工具和资产的构建块。

两种软件产品(库和 GUI 工具)都在积极开发并相互影响。对于两者,您都需要使用pip最简单的分发和 devenv 设置方式:

pip install gui_tool
or
pip install library
Run Code Online (Sandbox Code Playgroud)

Gui 工具(用例 1)


GUI 工具的安装通过pip进行,并且依赖项在setup.py中用硬版本号注明。您的库是这些依赖项之一:

...
install_requires = ['library==1.2, package_x==0.3, package_y==0.6'],
...
Run Code Online (Sandbox Code Playgroud)

安装过程包括安装工具并将依赖项解析到新的 virtualenv 中。由于每个依赖项版本都是硬连线的,因此您可以控制稳定且一致的安装。开发人员可以通过手动将库更新到新版本来控制夜间构建/前沿依赖关系:

pip install --upgrade library  # get the latest nightly build/hotfix release on your own
Run Code Online (Sandbox Code Playgroud)

自定义代码/工具(用例 2)


如前所述,许多代码和自定义工具可能是使用您的提供的 API 构建的。每个愿意使用它的人都应该使用顶部的 oneliner 通过 pip 轻松安装/更新它。


问题


GUI 工具开发人员应该能够使用 pip引入库依赖项的夜间构建/修补程序版本。其他使用 …

python pip nightly-build release-management dependency-management

5
推荐指数
1
解决办法
995
查看次数

为什么使用 RxJS .asObservable() getter/factory 函数模式?

在大量使用RxJS代码库的我似乎遇到暴露私人的模式SubjectsObservables通过getter或正常getObservable()功能。我的问题不是为什么.asObservable()要使用,而是为什么它看起来如此普遍地包含在 getter/factory 函数中?

asObservable() 包裹在 getter/factory 函数中


private readonly _engineInfo$ = new Subject<EngineInfo>();
get engineInfo$() { return this._engineInfo$.asObservable(); }
Run Code Online (Sandbox Code Playgroud)

asObservable() 作为实例变量


private readonly _engineInfo$ = new Subject<EngineInfo>();
public engineInfo$ = this._engineInfo$.asObservable();
Run Code Online (Sandbox Code Playgroud)

问题


  • 我undestanding是,.asObservable()创建一个新的Observable每次订阅了的Subject。此外,创建的内容Observable热门,可以多次订阅。为什么人会创建多个匿名实例Observable(每个接入/订阅),而不必只是一个Observable在一个类/服务访问,所有的观察者订阅?
  • 这种getter/factory function模式有什么不明显的优势吗?
  • 可能是因为垃圾收集或测试/模拟优势?

到目前为止,我在所有服务/类中使用第二个示例中的实例变量设置,一切似乎都按预期工作,也有多个观察者。

rxjs typescript reactivex angular

5
推荐指数
1
解决办法
332
查看次数

Angular9/Typescript3.8/Babylon4.1.0 - Typescript 编译错误 - 找不到模块“react”/找不到命名空间“JSX”

我目前在 Angular9 应用程序的上下文中面临Babylon4.1.0 的编译问题。检查员似乎无法导入内部使用的"react"模块。该问题可以通过以下方式重现: * 使用 CLI 创建引导 Angular9 应用程序 * 添加 @babylon/* 依赖项到package.json * 添加import '@babylonjs/inspector';app.component.ts

我玩过几个module设置target,但tsconfig.json没有运气。坦率地说,我在这里也有点无能为力,因为我认为npm应该下载所需的依赖项(例如react有什么想法可能导致这些问题吗?


以下是相关文件,但正如前面提到的,这基本上只是一个新引导的准系统 Angular9 应用程序。用于重现问题。设置几乎都是出厂默认值。

错误日志

$ npm run start

> angular9-babylon41@0.0.0 start D:\repos\angular9-babylon41
> ng serve


chunk {main} main.js, main.js.map (main) 1.99 kB [initial] [rendered]
chunk {polyfills} polyfills.js, polyfills.js.map (polyfills) 673 bytes [initial] [rendered]
chunk {runtime} runtime.js, runtime.js.map (runtime) 6.15 kB [entry] …
Run Code Online (Sandbox Code Playgroud)

typescript babylonjs angular

5
推荐指数
1
解决办法
5692
查看次数

Pyside插槽中的异常处理异常

问题:当在插槽中引发异常(由信号调用)时,异常似乎不会像往常一样通过Python调用堆栈传播。在下面的示例代码中调用:

  • on_raise_without_signal():将按预期处理异常。
  • on_raise_with_signal():将打印异常,然后意外地从else块中打印成功消息。

问题:在插槽中引发异常后,异常处理的原因是什么?是信号/插槽的PySide Qt包装的一些实现细节/限制吗?有什么要阅读的文档吗?

PS:当我在实现虚拟方法和时使用try / except / else / finally时获得令人惊讶的结果时,我最初遇到了该主题。QAbstractTableModelsinsertRows()removeRows()


# -*- coding: utf-8 -*-
"""Testing exception handling in PySide slots."""
from __future__ import unicode_literals, print_function, division

import logging
import sys

from PySide import QtCore
from PySide import QtGui


logging.basicConfig(level=logging.DEBUG)
logger = logging.getLogger(__name__)


class ExceptionTestWidget(QtGui.QWidget):

    raise_exception = QtCore.Signal()

    def __init__(self, *args, **kwargs):
        super(ExceptionTestWidget, self).__init__(*args, **kwargs)

        self.raise_exception.connect(self.slot_raise_exception)

        layout = QtGui.QVBoxLayout()
        self.setLayout(layout)

        # button to …
Run Code Online (Sandbox Code Playgroud)

python qt exception pyqt pyside

4
推荐指数
1
解决办法
784
查看次数

如何在QHeaderView和QTableView之间注入小部件?

我想QHeaderView在其他部分之间显示小部件QTableView,如下面的示例图片(用Photoshop创建),因为这似乎是一种自然的方式来启用输入过滤列.


有没有人对如何在中间注入小部件有任何想法?


在此输入图像描述

python qt pyqt qtableview qheaderview

3
推荐指数
1
解决办法
1027
查看次数

QTextEdit中的文本失真

我有一个QTextEdit我想要设置一些由ASCII Art文本渲染器生成的文本(unicode).一切都很好,除了QTextEdit扭曲文本.屏幕截图显示了在QTextEditvia中设置的相同unicode文本变量setText()并记录到控制台,在该控制台中正确显示.


QTextEdit扭曲文本


如果我使用QTextEditQPlainTextEdit,或者如果我通过setText(ascii_art_text)或设置文本似乎并不重要setPlainText(ascii_art_text).我在这里使用PySide,但我怀疑在这种情况下并不太感兴趣.


任何想法如何解决这种扭曲?

pyside qtextedit python-unicode

1
推荐指数
1
解决办法
226
查看次数