小编fur*_*ohn的帖子

Python Sphinx引用长名称

我正在研究我的Python模块的文档(使用Sphinx和reST),我发现当交叉引用其他Python对象(模块,类,函数等)时,完整的对象名称最终会非常长.通常它超过80个字符,我不惜一切代价避免.

这是一个例子:

def exampleFunction():
    '''Here is an example docstring referencing another
    :class:`module1.module2.module3.module4.module5.ReallyLongExampleClassName`

    '''
Run Code Online (Sandbox Code Playgroud)

问题是,在为ReallyLongExampleClassName类创建文档时,我为完整路径名称module1.module2.module3.module4.module5.ReallyLongExampleClassaName生成了它.

我想知道是否有办法解决这个问题?我尝试了以下方法,但没有成功:

1)在模块名称的中间添加换行符.例:

:class:`module1.module2.module3.module4.
module5.ReallyLongExampleClassName`
Run Code Online (Sandbox Code Playgroud)

2)以不同的(但仍然是Python可导入的)方式引用类名.例:

:class:`module1.module2.ReallyLongClassName`
Run Code Online (Sandbox Code Playgroud)

我相信,由于ReallyLongClassName的文档与完整路径名相关联,Sphinx无法将缩短版本与完全命名版本相关联.

任何帮助将不胜感激.


编辑04/05/2012:

根据j13r的答案/建议(见下文),我尝试了以下方法:

:class:`module1.module2.module3.module4.module5\
ReallyLongExampleClassName`
Run Code Online (Sandbox Code Playgroud)

这成功了.让它工作的唯一警告是,第二行之前必须没有空格(在文档字符串中使用它时非常令人沮丧).因此,为了使我的原始示例工作,它看起来像:

def exampleFunction():
    '''Here is an example docstring referencing another
    :class:`module1.module2.module3.module4.module5.\
ReallyLongExampleClassName`

    '''
Run Code Online (Sandbox Code Playgroud)

很好,很丑.如果要在"ReallyLongExampleClassName"之前放置空格以将其缩进到与其上面的行相同的级别,则输出将包含空格,因此Sphinx将尝试引用类似"module1.module2.module3.module4.module5.ReallyLongExampleClassName"的内容. "

我还应该注意到,我尝试了另外两种变体,但是没有用:

    # Note: Trying to put a space before the '\'
    :class:`module1.module2.module3.module4.module5. \
ReallyLongExampleClassName`

    # Note: Trying to leave out the '\'
    :class:`module1.module2.module3.module4.module5.
ReallyLongExampleClassName`
Run Code Online (Sandbox Code Playgroud)

我正在寻找一个不涉及破坏文档字符串格式的解决方案,但我想它会做...我想我实际上更喜欢超过80个字符的行.

感谢j13r的答案!

python documentation restructuredtext python-sphinx

9
推荐指数
2
解决办法
2329
查看次数

访问Ubuntu GDM登录屏幕的X Display

总的来说,我试图从单独的shell中将按键注入Ubuntu登录屏幕.我在标准登录屏幕上有机器(运行Ubuntu 10.04),我也通过SSH连接到机器.我尝试了以下(来自SSH shell):

$ ps ax | grep X
 2844 tty8     Ss+    0:01 /usr/bin/X :0 -br -verbose -auth /var/run/gdm/auth-for-gdm-Gp2Rlq/database
$ export DISPLAY=:0
$ xdotool key Return
No protocol specified
Error: Can't open display: :0
Failed creating new xdo instance
Run Code Online (Sandbox Code Playgroud)

一旦机器登录到Ubuntu,这种方法完全相同,但它不适用于登录屏幕.

理想情况下,我希望能够从另一个shell完成登录.我希望使用自动登录.我只是希望能够抓住正确的显示,并执行登录所需的按键操作.

任何帮助将不胜感激.

编辑:

感谢nm的提示我能够使用:

export DISPLAY=:0
sudo xdotool key Return
Run Code Online (Sandbox Code Playgroud)

这实现了我想要的,但现在我想知道是否有办法在没有'sudo'的情况下实现这一目标?有没有我可以启用/禁用的标志来解决这个问题?

再次感谢您的帮助.

x11 ubuntu ui-automation ubuntu-10.04

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

使用pyexiv2对JPEG进行地理标记

我正在使用pyexiv2 Python模块使用另一个SO答案中找到的代码对JPEG进行地理标记(请参阅:使用Python对jpeg-images进行地理标记的最佳方法是什么?)我对GPSTag值有疑问.

答案中给出的代码如下:

exiv_image["Exif.Image.GPSTag"] = 654
exiv_image["Exif.GPSInfo.GPSMapDatum"] = "WGS-84"
exiv_image["Exif.GPSInfo.GPSVersionID"] = '2 0 0 0'
Run Code Online (Sandbox Code Playgroud)

我查看了Exiv2文档并找到了GPSTag,GPSMapDatum和GPSVersionID的描述,但我仍然对GPSTag的价值感到困惑.

从文档中可以看出:

指向GPS Info IFD的指针.GPS Info IFD的互操作性结构与Exif IFD的互操作性结构一样,没有图像数据.

这个描述并没有真正解释如何确定使用什么值,我无法在线找到更好的GPSTag描述.

所以我的问题是:

  1. 给定一个新图像,您如何确定Exif.Image.GPSTag的值?
  2. 为什么代码示例使用值654(这可以通过问题1回答)?

谢谢你的帮助.

python jpeg geotagging pyexiv2

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