小编Amo*_*gel的帖子

特质可以为其继承的特质的方法提供默认实现吗?

我有几个方法的特征。一些(但不是所有)实现此特征的结构都具有以下方法之一的所有相同实现:

trait Blabla {
    fn xy(self, x: u32, y: u32) -> u32;
}

// ---------------------------------
struct Ding {}

impl Blabla for Ding {
    fn xy(self, x: u32, y: u32) -> u32 {
        x + y
    }
}

// ---------------------------------
struct Dong {
    dong_attribute: u32,
}

impl Dong {
    fn get_1(self) -> u32 {
        1
    }
}

impl Blabla for Dong {
    fn xy(self, x: u32, y: u32) -> u32 {
        x + y + self.get_1()
    }
}

// ---------------------------------
struct …
Run Code Online (Sandbox Code Playgroud)

traits rust

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

通过 Pip 从 setup.py 打印一条消息

有没有什么方法可以让用户在使用时从 setup.py 中看到消息和/或警告pip

我的包使用自定义安装命令。setup.py的结构如下:

from setuptools import setup
from setuptools.command.install import install
import warnings
import sys


class CustomInstallCommand(install):
    def run(self):
        install.run(self)
        sys.stdout.write('My message.\n')
        sys.stdout.flush()
        warnings.warn('My warning.', UserWarning)


setup(name='blub',
      version='0.1',
      description='blah',
      packages=['blub'],
      cmdclass={'install': CustomInstallCommand})
Run Code Online (Sandbox Code Playgroud)

当我运行时python setup.py install,我在输出中看到自定义打印消息和警告。

但是,如果我运行pip install .,我只会得到这个:

C:\Users\ae\Software\SomeModule>pip install .
Processing c:\users\ae\software\somemodule
Building wheels for collected packages: blub
  Building wheel for blub (setup.py) ... done
  Created wheel for blub: filename=blub-0.1-cp37-none-any.whl size=1115 sha256=51c91c5b449673e3be5dd7382cd12f59cb38021167ba3a0b3634214419c61bcb
  Stored in directory: C:\Users\ae\AppData\Local\Temp\pip-ephem-wheel-cache-575zecpf\wheels\81\5f\73\46e55517a1e0973939e9578945ff104b6e0193cfaed649e206
Successfully built blub
Installing collected packages: …
Run Code Online (Sandbox Code Playgroud)

python warnings pip setuptools

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

如何在用户系统上不需要特定 MinGW 版本的情况下使用编译的 Fortran 扩展模块构建 Python 轮子?

据我了解,通过轮子分发 Python 包的主要优点之一是我可以以编译形式包含扩展模块。然后,包的用户不需要具有允许编译源代码的系统。

现在我设法为我的包构建了一个轮子,其中包含一个 Fortran 扩展模块。我构建的计算机有 Windows7 64 和 Python 3.6。

为了让一切正常运行,我遵循了这个非常有用的指南(非常感谢 Michael Hirsch)。步骤之一是使用以下设置安装MinGW-64:架构:x86_64,线程:posix,异常:seh。

然后我从那个轮子在另一台测试机器(Win10 64,Python 3.6)上安装了 Python 包:

D:\dist2>pip install SMUTHI-0.2.0a0-cp36-cp36m-win_amd64.whl
Processing d:\dist2\smuthi-0.2.0a0-cp36-cp36m-win_amd64.whl
Requirement already satisfied: scipy in c:\programdata\anaconda3\lib\site-packages (from SMUTHI==0.2.0a0)
Requirement already satisfied: sympy in c:\programdata\anaconda3\lib\site-packages (from SMUTHI==0.2.0a0)
Requirement already satisfied: argparse in c:\programdata\anaconda3\lib\site-packages (from SMUTHI==0.2.0a0)
Requirement already satisfied: numpy in c:\programdata\anaconda3\lib\site-packages (from SMUTHI==0.2.0a0)
Requirement already satisfied: matplotlib in c:\programdata\anaconda3\lib\site-packages (from SMUTHI==0.2.0a0)
Requirement already satisfied: pyyaml in c:\programdata\anaconda3\lib\site-packages (from SMUTHI==0.2.0a0)
Requirement already satisfied: six>=1.10 …
Run Code Online (Sandbox Code Playgroud)

python dll fortran mingw python-wheel

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

PyQT 在调用其他函数之前强制更新 textEdit

我的问题涉及 PyQT5。我尝试创建一个带有按钮的对话框窗口,单击该按钮时

  1. 更新QTextEdit字段的一些文本
  2. 调用一个函数(需要很长时间才能终止)

像这样的东西:

class StartDialog(QtWidgets.QWidget, start_dialog_ui.Ui_Dialog):
  def __init__(self, parent):
    super(self.__class__, self).__init__()
    self.setupUi(self)
    self.OKButton.clicked.connect(self.start)

 def start(self):
    self.startDialogTextEdit.append("simulation running ...")
    run_lengthy_function(self)
Run Code Online (Sandbox Code Playgroud)

然而,当我运行 GUI 时,我注意到文本仅在冗长的函数终止QTextEdit.append才会更新,尽管是在冗长的函数之前调用的。如何强制提前更新文本?

到目前为止我尝试过的(但没有成功)是让Python在触发冗长的函数调用之前等待一段时间,即

from time import sleep

class StartDialog(QtWidgets.QWidget, start_dialog_ui.Ui_Dialog):
  def __init__(self, parent):
    super(self.__class__, self).__init__()
    self.setupUi(self)
    self.OKButton.clicked.connect(self.start)

 def start(self):
    self.startDialogTextEdit.append("simulation running ...")
    sleep(5)
    run_lengthy_function(self)
Run Code Online (Sandbox Code Playgroud)

python pyqt pyqt5

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

标签 统计

python ×3

dll ×1

fortran ×1

mingw ×1

pip ×1

pyqt ×1

pyqt5 ×1

python-wheel ×1

rust ×1

setuptools ×1

traits ×1

warnings ×1