麻烦问下,为何我的python敲入模块后,方法无法补全

已查看 2 次
跳至第一个未读帖子

Ericzhao82

未读,
2009年7月22日 23:22:152009/7/22
收件人 python. cn
举例来说
import subprocess
键入
subprocess.
and press Tab to get a tab completion of the attributes available.
我键入table却无法补全,请指点,谢谢

系统是ubuntu 9.04,ptyhon2.6.2

thks

smallfish.xy

未读,
2009年7月22日 23:24:012009/7/22
收件人 pyth...@googlegroups.com
你用自带的解释器还是IDE呢
如果想shell可以tab的话,装个ipython玩玩
sudo apt-get install ipython
--
blog: http://hi.baidu.com/smallfish_xy


2009/7/23 Ericzhao82 <ericz...@gmail.com>

@@

未读,
2009年7月22日 23:25:282009/7/22
收件人 pyth...@googlegroups.com
关键的问题没说。。。
估计是说交换窗口里。那就用ipython吧 效果保证满意

2009/7/23 smallfish.xy <smallf...@gmail.com>

Ericzhao82

未读,
2009年7月22日 23:26:022009/7/22
收件人 pyth...@googlegroups.com
我是
shell$ python
>>>import subproess
>>>>subproess.<tab> nothing.....

2009/7/23 smallfish.xy <smallf...@gmail.com>



--
…………………………………………
              Ericzhao

Email:   Ericz...@gmail.com
MSN:    Ericz...@hotmail.com
BLOG:   share82.freebsder.info

Ericzhao82

未读,
2009年7月22日 23:27:342009/7/22
收件人 pyth...@googlegroups.com
多谢两位,我用下ipython

2009/7/23 @@ <ask...@gmail.com>

@@

未读,
2009年7月22日 23:31:412009/7/22
收件人 pyth...@googlegroups.com
而且ipython里还能用shell
比如可以!ls
也可以把ls得到的值返回给python
a = !ls
for b in a:
  print b



2009/7/23 Ericzhao82 <ericz...@gmail.com>

Jiahua Huang

未读,
2009年7月23日 01:59:042009/7/23
收件人 pyth...@googlegroups.com
呃,下次你应该说详细,

说明你是直接用的 python 命令进入的交互模式,否则可能的情况太多了。

交互模式使用 python 建议使用 ipython,
执行
sudo apt-get install ipython
安装。


不过 python 命令行其实也是支持补全的,
在python 后先执行一句
import readline, rlcompleter; readline.parse_and_bind("tab: complete")
然后就可以按 Tab 补全了。


在我这儿,我是让 python 命令行交互模式自动执行那语句,

即在 ~/.pythonstartup.py 写入
#!/usr/bin/python
# -*- coding: UTF-8 -*-

import readline, rlcompleter; readline.parse_and_bind("tab: complete") # 启用Tab补全

def igtk():
    #import gtk, thread ; gtk.gdk.threads_init() ; thread.start_new_thread(gtk.main, ()) # 启用 Gtk 线程支持
    globals()['gtk'] = __import__('gtk')
    globals()['thread'] = __import__('thread')
    gtk.gdk.threads_init()
    thread.start_new_thread(gtk.main, ())
    pass


然后添加环境变量 PYTHONSTARTUP=~/.pythonstartup.py ,
即在 ~/.bashrc 末尾加一行
export PYTHONSTARTUP=~/.pythonstartup.py

以后执行 python 命令进入交互模式,就直接可以 Tab 补全了。

上边例子还有个 igtk() 函数,
是用于命令行测试 PyGtk 使用的,
进入 Python 交互模式执行 igtk() 即可直接测试 Gtk 代码。




呃,为了交互模式更好用一些,还可以写下 ~/.inputrc 文件,写入
##  history search
"\e[A": history-search-backward
"\e[B": history-search-forward
## visible ring
set visible-stats on
## menu complete
"\C-n": menu-complete

## 快捷键备忘
## Ctrl + A : 光标移到行首。
## Ctrl + E : 光标移到行尾。
## Ctrl + L : 清屏。
## Ctrl + U : 清除光标前至行首间的所有内容。
## Ctrl + H : 同 backspace 键相同。
## Ctrl + R : 搜索之前打过的命令。
## Ctrl + C : 杀死当前进程。
## Ctrl + D : 退出当前 Shell。
## Ctrl + Z : 把当前进程转到后台运行,使用' fg '命令恢复。
## Ctrl + W : 移除光标前的一个单词
## Ctrl + K : 清除光标后至行尾的内容。
## Ctrl + T : 交换光标位置前的两个字符。
## Esc + T  : 交换光标位置前的两个单词。
## Alt + F  : 在当前行把光标向前移一个单词。
## Alt + B  : 在当前行把光标向后移一个单词。
## Tab      : 自动补完命令



就这些了,祝玩 python 愉快。


iXh

未读,
2009年7月23日 02:21:102009/7/23
收件人 pyth...@googlegroups.com
多问一句
好像第三方的库没有被ipython索引到
比如MySQLdb
我是用python安装它
但是ipython索引不到
有没有什么办法让它索引到呢

2009/7/23 Jiahua Huang <jhuang...@gmail.com>

篱笆

未读,
2009年7月23日 02:40:562009/7/23
收件人 pyth...@googlegroups.com
可以索引到!

2009/7/23 iXh <ixh.x...@gmail.com>:

--
分享免费bt种子
卡门BT
http://www.btabc.net

iXh

未读,
2009年7月23日 02:46:402009/7/23
收件人 pyth...@googlegroups.com
大概懂了
要import这个模块以后
它就能被索引

2009/7/23 篱笆 <name...@gmail.com>

khsing

未读,
2009年7月23日 02:48:352009/7/23
收件人 pyth...@googlegroups.com
如果只想tab补全,又不想ipython那么大型可以按这个来做。

http://blog.yzlin.org/2008/12/22/75/

2009/7/23 篱笆 <name...@gmail.com>:

--
A man live in jail and want to break.
http://blog.khsing.net

Jiahua Huang

未读,
2009年7月23日 03:05:582009/7/23
收件人 pyth...@googlegroups.com
跟我贴的一个东西,还少了内容啊

2009/7/23 khsing <khsing.cn@gmail.com>
如果只想tab补全,又不想ipython那么大型可以按这个来做。

http://blog.yzlin.org/2008/12/22/75/

Ericzhao82

未读,
2009年7月23日 04:01:162009/7/23
收件人 pyth...@googlegroups.com
在用ipython了,很不错。但有个问题请教下,退出一个Func不知道用什么命令,谢谢。
例如

def myFunc():
do smthing

<这里用什么方法结束myFunc>

myFunc()

do smthing ………………

@@

未读,
2009年7月23日 04:02:432009/7/23
收件人 pyth...@googlegroups.com
home enter

2009/7/23 Ericzhao82 <ericz...@gmail.com>

yua3891

未读,
2009年7月23日 04:06:582009/7/23
收件人 python-cn
我还是在windows下用ActivePython26   会不会很糗啊?呵。
 
 
2009-07-23

yua3891

发件人: Ericzhao82
发送时间: 2009-07-23  16:01:31
收件人: python-cn
抄送:
主题: [CPyUG:92804] Re: 麻烦问下,为何我的python敲入模块后,方法无法补全

Ericzhao82

未读,
2009年7月23日 04:21:342009/7/23
收件人 pyth...@googlegroups.com
多谢。。
我还help了半天都没找到。。

2009/7/23 @@ <ask...@gmail.com>

Jiahua Huang

未读,
2009年7月23日 04:27:212009/7/23
收件人 pyth...@googlegroups.com
建议用 pass 或 return 结束每个块

2009/7/23 Ericzhao82 <ericz...@gmail.com>

jun lin

未读,
2009年7月23日 04:28:422009/7/23
收件人 pyth...@googlegroups.com
你还算好,我搞emacs的python模式都是手K的。。。

2009/7/23 Ericzhao82 <ericz...@gmail.com>

Jiahua Huang

未读,
2009年7月23日 04:30:092009/7/23
收件人 pyth...@googlegroups.com
emacs 的 python mode 可是很强大的……

别只当成 notepad 用啊

2009/7/23 jun lin <linjun...@gmail.com>
你还算好,我搞emacs的python模式都是手K的。。。

lucas.cao

未读,
2009年7月23日 21:03:242009/7/23
收件人 pyth...@googlegroups.com
我一直都是在Fedora下用wing3.1,非常强大,不要钱,哈哈。

2009/7/23, Jiahua Huang <jhuang...@gmail.com>:

jacky ma

未读,
2009年7月23日 21:24:552009/7/23
收件人 pyth...@googlegroups.com
楼上jiahua Huang和khsing两位都说到了一个方法,可我试了一下提示没有readline模块。
>>> import rlcompleter, readline
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ImportError: No module named readline

另外,我执行
> sudo apt-get install ipython

安装ipython时候也提示错误
>>> sudo apt-get install ipython
  File "<stdin>", line 1
    sudo apt-get install ipython
           ^
SyntaxError: invalid syntax

--
好好学习,天天向上!
Good good study, day day up!
Study well and make progress every day!

Python beginner :http://jackyma1981.blogspot.com

smallf...@gmail.com

未读,
2009年7月23日 21:27:592009/7/23
收件人 pyth...@googlegroups.com
sudo是在系统shell里,不是python环境里。。。。。
真怀疑你是否用过ubuntu
--
blog: http://hi.baidu.com/smallfish_xy


2009/7/24 jacky ma <jacky...@gmail.com>

@@

未读,
2009年7月23日 21:33:472009/7/23
收件人 pyth...@googlegroups.com
sudo apt-get install ipython 不是在python里输入的
你用的是windows吧?
另外下安装程序吧
windows要装pyreadline后装ipython

2009/7/24 jacky ma <jacky...@gmail.com>

Zoom.Quiet

未读,
2009年7月23日 21:27:002009/7/23
收件人 pyth...@googlegroups.com
ipython shell is not OS shell

2009/7/24 jacky ma <jacky...@gmail.com>:

--
http://zoomquiet.org 人生苦短,Pythonic!-)
KM乃是培育可催生自学习型组织的文化氛围!

瑞依(lwkyy)

未读,
2009年7月23日 21:47:372009/7/23
收件人 pyth...@googlegroups.com
readline也不是一个单独的模块,它是open()的一个子函数(不知这样说对不对)
正确的使用方法是:

re=open('file_poth', 'r')
re.readline()



2009/7/24 @@ <ask...@gmail.com>

smallf...@gmail.com

未读,
2009年7月23日 22:19:572009/7/23
收件人 pyth...@googlegroups.com
你搞错了... module
--
blog: http://hi.baidu.com/smallfish_xy


2009/7/24 瑞依(lwkyy) <lwk...@gmail.com>

@@

未读,
2009年7月23日 22:21:212009/7/23
收件人 pyth...@googlegroups.com
呃 这是2个不同的东西

2009/7/24 瑞依(lwkyy) <lwk...@gmail.com>

瑞依(lwkyy)

未读,
2009年7月24日 00:29:012009/7/24
收件人 pyth...@googlegroups.com
 不同的东西?怎么讲,谁能解释下,

2009/7/24 @@ <ask...@gmail.com>

@@

未读,
2009年7月24日 00:41:312009/7/24
收件人 pyth...@googlegroups.com

Jiahua Huang

未读,
2009年7月24日 00:44:582009/7/24
收件人 pyth...@googlegroups.com
先无语一下你……

大家在说的 readline , 是指的 python-readline 这个模块,
python-readline 是对 readline 这个 C 库的封装,
用于支持高级命令行编辑动作。

而你说的,却是 file 对象的 .readline() 方法。

难道模块和方法,你都要解释为啥是两个东西?

瑞依(lwkyy)

未读,
2009年7月24日 00:47:412009/7/24
收件人 pyth...@googlegroups.com
别无语了,前面提的是pyreadline,我看成了readline了,看上面那位的链接一下子就明白了。

2009/7/24 Jiahua Huang <jhuang...@gmail.com>

Jiahua Huang

未读,
2009年7月24日 00:49:342009/7/24
收件人 pyth...@googlegroups.com
呃, win 下的 pyreadline 和 Linux 下标准发布里的 python-readline 貌似也是不同的东西,

pyreadline 是 ctypes win32 的模块,
而 python-readline 则是 GNU readline interface

Jiahua Huang

未读,
2009年7月24日 00:51:132009/7/24
收件人 pyth...@googlegroups.com
更加无语!

自个去看
http://docs.python.org/library/readline

说的是 readline 模块

模块和方法就算名字一样,也不是同一个东西。


你别死要面子, 认错吧。

2009/7/24 瑞依(lwkyy) <lwk...@gmail.com>
别无语了,前面提的是pyreadline,我看成了readline了,看上面那位的链接一下子就明白了。

@@

未读,
2009年7月24日 00:58:522009/7/24
收件人 pyth...@googlegroups.com
他回复的我的邮件 我以为他在问pyreadline 。。。

2009/7/24 Jiahua Huang <jhuang...@gmail.com>

瑞依(lwkyy)

未读,
2009年7月24日 01:02:492009/7/24
收件人 pyth...@googlegroups.com
我承认有些答非所问了,但我绝对不是因为好面子,面子不值钱。



2009/7/24 Jiahua Huang <jhuang...@gmail.com>

Jiahua Huang

未读,
2009年7月24日 01:03:252009/7/24
收件人 pyth...@googlegroups.com
呃,模块名是一样的 readline,

可能因为 Win32 下默认没法用 GNU readline,
所以 pyreadline 才用 ctype 弄兼容 readline 的模块

2009/7/24 @@ <ask...@gmail.com>
他回复的我的邮件 我以为他在问pyreadline 。。。

Jiahua Huang

未读,
2009年7月24日 01:03:522009/7/24
收件人 pyth...@googlegroups.com
赞,

学习 Zoomq 大妈好榜样~

2009/7/24 瑞依(lwkyy) <lwk...@gmail.com>
面子不值钱。

Jiahua Huang

未读,
2009年7月24日 01:05:072009/7/24
收件人 pyth...@googlegroups.com
赞,

我收回前面前面的前面那句话~

bhur wen

未读,
2009年7月29日 02:56:452009/7/29
收件人 pyth...@googlegroups.com
郁闷,申请退订啊
 
工作忙,邮件多,应付不过来了
 
都申请好多遍啦

Jiahua Huang

未读,
2009年7月29日 03:03:462009/7/29
收件人 pyth...@googlegroups.com
你无非是 收件箱/Inbox 里邮件太多而已,

这说明你没有物尽其用,没有善用 Gmail。

Gmail 有过滤器和存档,
可以让邮件列表的邮件不出现在收件箱的。

使用过滤器处理本列表简单点的步骤:
1. 点击 Gmail 页面上方搜索框右侧的 “创建过滤器”
2. 在过滤条件,发送到/To: 里边填写 pyth...@googlegroups.com
3. 点击下一步
4. 选中应用到一下搜索到的邮件
5. 在过滤器动作里边,选上 存档/跳过收件箱
6. 再选上 加标签, 新标签,py-cn
7. 确定


这可是很基本的软件操作能力

2009/7/29 bhur wen <wen...@gmail.com>:
> 郁闷,申请退订啊
>
> 工作忙,邮件多,应付不过来了
>
> 都申请好多遍啦
>

回复全部
回复作者
转发
0 个新帖子