小编Eur*_*ice的帖子

GitHub:用户名或密码无效

我有一个在GitHub上托管的项目.我试图推动我对主人的修改时失败了.我总是收到以下错误消息

Password for 'https://git@github.com': 
remote: Invalid username or password.
fatal: Authentication failed for 'https://git@github.com/eurydyce/MDANSE.git/'
Run Code Online (Sandbox Code Playgroud)

但是,将我的ssh密钥设置为github似乎没问题.的确,当我做的时候,ssh -T git@github.com我得到了

Hi eurydyce! You've successfully authenticated, but GitHub does not provide shell access.
Run Code Online (Sandbox Code Playgroud)

这似乎表明从那一方来说一切正常(eurydyce是我的github用户名).我严格遵循github上给出的指令和许多堆栈讨论的建议,但没办法.你知道我做错了什么吗?

git github

321
推荐指数
17
解决办法
31万
查看次数

如何避免全局变量

当阅读python文档和各种邮件列表时,我总是阅读看起来有点像教条的内容.全局变量应该像地狱一样避免,它们设计很差......好吧,为什么不呢?但是有一些真实的生活情况,我不知道如何避免这种模式.

假设我有一个GUI,可以从主菜单中加载几个文件.可以在所有GUI(例如,将显示图像并且可以通过不同对话框/插件在其上执行各种动作的图像查看器)上使用与加载的文件相对应的文件对象.

构建以下设计是否有问题:

  • Menu.py - >文件将从这里加载
  • Main.py - >可以在这里使用加载的文件对象
  • Dialog1.py - >或在这里
  • Dialog2.py - >或那里
  • Dialog3.py - >或那里
  • ...
  • Globals.py

其中Globals.py将存储一个字典,其字符是已加载文件的名称和相应文件对象的值.然后,从那里,需要这些数据的代码的各个部分将通过弱引用访问它.

对不起,如果我的问题看起来(或是)很愚蠢,但你看到任何优雅或全球免费的替代品吗?一种方法是将加载的数据字典封装在Main.py的主应用程序类中,将其视为GUI的中央访问部分.然而,这也会带来一些复杂性,因为这个类应该可以从所有需要数据的对话框中轻松访问,即使它们是必要的直接子代.

非常感谢你的帮助

python global-variables

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

Python 日志记录检索特定处理程序

我们正在开发一个 python 程序/库,我们想为其设置一个日志系统。基本上我们想在终端上登录或在文件上登录。为此,我们将使用标准发行版中嵌入的优秀日志记录包。

用户应通过其首选项来自定义日志记录级别。我的问题是如何检索连接到记录器的处理程序之一?我在想一些类似这样的事情:

import logging

class NullHandler(logging.Handler):
    def emit(self,record):
        pass

HANDLERS = {}
HANDLERS['console'] = logging.StreamHandler()
HANDLERS['logfile'] = logging.FileHandler('test.log','w')

logging.getLogger().addHandler(NullHandler())
logging.getLogger('console').addHandler(HANDLERS['console'])
logging.getLogger('logfile').addHandler(HANDLERS['logfile'])

def set_log_level(handler, level):
    if hanlder not in HANDLERS:
        return

    HANDLERS[handler].setLevel(level)

def log(message, level, logger=None):

    if logger is None:
        logger= HANDLERS.keys()

    for l in logger:
        logging.getLogger(l).log(level, message)
Run Code Online (Sandbox Code Playgroud)

正如您所看到的,我的实现意味着使用 HANDLERS 全局字典来存储我创建的处理程序的实例。我找不到更好的方法来做到这一点。在该设计中,可以说,由于我只为每个记录器插入一个处理程序,因此我的记录器对象的处理程序属性应该没问题,但我正在寻找更通用的东西(即,如果有一天插入多个处理程序,该怎么办到我的一位记录器?)

你怎么看待这件事 ?

非常感谢

埃里克

python logging

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

沿任意维度切割numpy数组

说我有一个(40,20,30)numpy数组,并且我有一个函数,在一些工作后将沿选定的输入轴返回一半的输入数组.有自动方法吗?我想避免这么难看的代码:

def my_function(array,axis=0):

    ...

    if axis == 0:
        return array[:array.shape[0]/2,:,:] --> (20,20,30) array
    elif axis = 1:
        return array[:,:array.shape[1]/2,:] --> (40,10,30) array
    elif axis = 2: 
        return array[:,:,:array.shape[2]/2] --> (40,20,15) array
Run Code Online (Sandbox Code Playgroud)

谢谢你的帮助

埃里克

python numpy

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

Matplotlib blitting不会更新我的画布

我有一个使用matplotlib画布的应用程序,它基本上包含一个imshow和一些艺术家对象(例如省略号).图形画布受以下事件序列限制:

  • 右键选择艺术家对象 - >将改变艺术家的面部颜色
  • 左键释放 - >将选定的艺术家移动到新位置

为了加快绘图速度,我必须使用blitting.当我运行事件序列时,选择要移动的椭圆将显示在画布的旧坐标和新坐标中.当我用a替换blitting机器时不会发生这个问题canvas.draw().

你有什么想法我在做blitting的错误吗?

这是一个快速而又脏的片段,可以重现我的问题(ubuntu 12.04,python 2.7,matplotlib 1.1.1rc).

import numpy
from pylab import figure, show
from matplotlib.patches import Ellipse

def on_pick_ellipse(event):

    if event.mouseevent.button == 3:
        ellipse = event.artist
        ellipse.set_facecolor((1,0,0))
        subplot.draw_artist(ellipse)
        fig.canvas.blit(subplot.bbox)

    return True

def on_move_ellipse(event):

    global ellipse

    if event.button == 3:
        return 

    if ellipse is not None :
        fig.canvas.restore_region(background)
        newCenter = (event.xdata, event.ydata)
        ellipse.center = newCenter
        ellipse.set_facecolor((0,0,1))
        subplot.draw_artist(ellipse)
        fig.canvas.blit(subplot.bbox)
        ellipse = None
        return True

ellipse = None

data = numpy.random.uniform(0,1,(640,256))

fig = figure() …
Run Code Online (Sandbox Code Playgroud)

python matplotlib

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

从 QSortFilterProxyModel 的索引中获取源模型的项

我有一个应用程序,其中包含一个QTreeView其底层模型,比如MyModelQStandardItemModel. 为了从view中过滤掉一些items MyModel,我把它插进aQSortFilterProxyModel里面,然后又插进了QTreeView。当我需要从我的代理模型的给定索引中获取源模型的一项时,我总是必须这样编码:

auto my_model = dynamic_cast<MyModel*>(proxy_model->sourceModel());
auto source_index = proxy_model->mapToSource(proxy_index);
auto item = my_model->itemFromIndex(source_index);
Run Code Online (Sandbox Code Playgroud)

我没有找到任何直接的方法来做到这一点。您是否知道更直接的方法来做到这一点,或者是我在使用 Qt 代理模型概念的方式中理解某些东西的迹象?

qt

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

pyparsing以最常见的形式解析python函数调用

我想使用优秀的pyparsing包以最常见的形式解析python函数调用.我读了一篇在这里有点用处但仍然不够通用的帖子.

我想解析以下表达式:

f(arg1,arg2,arg3,...,kw1=var1,kw2=var2,kw3=var3,...)
Run Code Online (Sandbox Code Playgroud)

哪里

  1. arg1,arg2,arg3 ...是任何类型的有效python对象(整数,实数,列表,字典,函数,变量名......)
  2. kw1,kw2,kw3 ...是有效的python关键字名称
  3. var1,var2,var3是有效的python对象

我想知道是否可以为这样的通用模板定义语法.我或许要求太多了......你有什么想法吗?

非常感谢您的帮助

埃里克

python pyparsing

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

标签 统计

python ×5

git ×1

github ×1

global-variables ×1

logging ×1

matplotlib ×1

numpy ×1

pyparsing ×1

qt ×1