我正在研究我的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的答案!
总的来说,我试图从单独的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'的情况下实现这一目标?有没有我可以启用/禁用的标志来解决这个问题?
再次感谢您的帮助.
我正在使用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描述.
所以我的问题是:
谢谢你的帮助.