小编The*_*ler的帖子

以编程方式通过importlib导入模块 - __path__未设置?

我正在尝试以编程方式导入子模块.我的文件树看起来像这样:

oopsd/__init__.py
oopsd/oopsd.py
oopsd/driver/__init__.py
oopsd/driver/optiups.py
Run Code Online (Sandbox Code Playgroud)

optiups.py只打印"Hello World".

oopsd.py看起来像这样:

import importlib
importlib.import_module('oopsd.driver.optiups')
Run Code Online (Sandbox Code Playgroud)

现在有了这个,我得到了这个例外:

Traceback (most recent call last):
  File "<frozen importlib._bootstrap>", line 1521, in _find_and_load_unlocked
AttributeError: 'module' object has no attribute '__path__'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "oopsd/oopsd.py", line 29, in <module>
    sys.exit(main())
  File "oopsd/oopsd.py", line 23, in main
    loaddriver()
  File "oopsd/oopsd.py", line 26, in loaddriver
    importlib.import_module('oopsd.driver.optiups')
  File "/usr/lib/python3.3/importlib/__init__.py", line 90, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
  File "<frozen importlib._bootstrap>", line …
Run Code Online (Sandbox Code Playgroud)

python python-import python-3.x

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

PyQt:使用QApplication.quit时偶尔会出现段错误

注意:我也在PyQt邮件列表上发布了这个 - 如果有一个好的答案,我会在这里回答我自己的问题.

我在执行时遇到偶然的段错误问题 QApplication.quit(),可能与libQt5Network.so和/或QtWebkit有关.

首先,我正在使用的3个测试系统:

  • Arch Linux,PyQt 5.2,Qt 5.2.0,Python 3.3.3
  • Ubuntu 13.10,PyQt 5.0.1,Qt 5.0.2,VM中的Python 3.3.2
  • Windows 7,PyQt 5.2,Qt 5.2.0,Python 3.3.3

到目前为止,这些崩溃从未发生在Arch上,经常出现在Ubuntu上,而且在Windows中时常发生.(虽然Windows只是一个猜测,我只是得到这个python.exe不再工作 foo.)

原来的崩溃

我首先注意到一个大(ger)项目qutebrowser中的问题,它在键入时给了我这个堆栈跟踪:quit(在Ubuntu上):

#0  0xb5c296fc in QMutex::lock() () from /usr/lib/i386-linux-gnu/libQt5Core.so.5
#1  0xb3bdd97d in ?? () from /usr/lib/i386-linux-gnu/libQt5Network.so.5
#2  0xb3bdf0d0 in ?? () from /usr/lib/i386-linux-gnu/libQt5Network.so.5
#3  0xb3bd4418 in ?? () from /usr/lib/i386-linux-gnu/libQt5Network.so.5
#4  0xb3bd8b1e in ?? () from /usr/lib/i386-linux-gnu/libQt5Network.so.5
#5  0xb5dedf10 in QMetaObject::activate(QObject*, int, int, void**) ()
   from /usr/lib/i386-linux-gnu/libQt5Core.so.5
#6  0xb5dee48b in …
Run Code Online (Sandbox Code Playgroud)

python qt pyqt segmentation-fault qtnetwork

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

计算圆中的点 - 步长?

我想计算一个圆圈中的所有点.我已经知道我可以计算出使用点x = r * cos(theta) + x0,y = r * sin(theta) + y0-但是我不知道是否有找到一个适当的步长θ表示基于我像素的画布的分辨率(或LCD对我来说)和圆的半径一个很好的方式.

这是我已经拥有的代码(_arange()类似range()但也采用浮动值step):

def circle(x0, y0, r):
    step = 2 * math.pi / 1000
    for theta in _arange(0, 2 * math.pi, step):
        x = x0 + r * math.cos(theta)
        y = y0 + r * math.sin(theta)
        set(round(x), round(y))
Run Code Online (Sandbox Code Playgroud)

algorithm math geometry trigonometry angle

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

为什么在宏中使用保留名称(以 _ 开头)?

以双下划线开头的标识符在 C 中保留

那为什么我在像Linux内核这样的语句表达式中的代码中经常看到这样的标识符呢?

举个例子,这是container_of宏:

#define container_of(ptr, type, member) ({ \
            const typeof( ((type *)0)->member ) *__mptr = (ptr); \
            (type *)( (char *)__mptr - offsetof(type,member) );})
Run Code Online (Sandbox Code Playgroud)

为什么那里的临时值被称为__mptr保留名称?为什么不只是mptr

c standards gcc identifier

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

doxygen - 成员(/// <)之后的文档不起作用

部屋,

我正在尝试用doxygen记录我的C代码,但是使用"成员之后的文档"样式似乎对我不起作用.doxygen文档说:

将文档放在成员之后

如果要记录文件,结构,联合,类或枚举的成员,有时需要将文档块放在成员之后而不是之前.为此,您必须在注释块中添加一个<标记.请注意,这也适用于函数的参数.

这里有些例子:

[...]

大多数情况下,人们只想在会员后面做一个简短的描述.这样做如下:

int var; //!< Brief description after the member
Run Code Online (Sandbox Code Playgroud)

要么

int var; ///< Brief description after the member
Run Code Online (Sandbox Code Playgroud)

最佳源代码示例:

/** @file  test.c */

void foo(void) {
    uint8_t bar; ///< Some random variable
}
Run Code Online (Sandbox Code Playgroud)

我的Doxyfile被粘贴在这里.

我没有在文档中获得变量的描述,而是得到了这个:

2.1.1功能文档

2.1.1.1 void foo(void)

<一些随机变量

有人碰巧知道为什么吗?

c doxygen

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