是否有相当于python的粘液?
例如,如果我将光标定位在foo()上并执行M-。 (跳转到定义)我想看看函数foo的源定义
无论foo是否在
,这都应该有效1)本地项目目录
2)在一些〜/ .virtualenvs / bar / lib / site-packages
中3)在其他一些python-path
中4)虚拟环境正在使用中(即,它应该在我当前的virtualenv中查看)
pymacs / ropemacs组合是否可以执行此操作?
答案 0 :(得分:14)
要避免使用-e,您可以使用etags并使用find来递归添加py文件:
find . -type f -name '*.py' | xargs etags
答案 1 :(得分:8)
这里提到的大部分答案都已过时。一个简单的解决方案是将elpy用于M-.
而不使用etags(这需要额外的工作)。
M-x package-install elpy
然后安装python包
$ sudo pip install rope jedi
重启emacs,打开任何python文件并运行M-.
Elpy已完整记录,您可以阅读about M-.
here。
答案 2 :(得分:4)
M-。通常运行“find-tag
”功能。
您应该创建python源文件的TAGS文件。然后在做M-之前你“visit-tags-table
”。
这样,Emacs将跳转到标签的所有定义。键入C-u M-。跳转标签的下一个定义。有关帮助,请参阅find-tag文档。请参阅Emacs帮助,了解如何从python源文件创建TAGS文件。
例如,您可以使用Exuberant Ctags创建TAGS文件。
转到python文件的根目录并执行以下操作:
ctags -e -R .
通常在项目的根目录中创建TAGS文件。
答案 3 :(得分:3)
接受answer错过了重要的一点,如果您执行etags
find . -type f -name '*.py' | xargs etags
,那么每次为每个文件生成TAGS文件。
正确的方法是将数据附加到--append
的现有TAGS文件中
rm -f TAGS
find . -type f -name '*.py' -print0 | xargs -0 etags --append
此外,如果您想要包含来自虚拟环境网站包dir的标识符(例如:~/.virtualenvs/bar/lib/site-packages
):
SITEPACKAGES=$(cdvirtualenv;pwd)/lib/python3.6/site-packages/
find $SITEPACKAGES -type f -name '*.py' -print0 | xargs -0 etags -a
*将python3.6
调整为您当前的Python版本
答案 4 :(得分:2)
以下内容将为您当前的项目编制索引
find . -type f -name '*.py' | xargs etags
但是如果你想索引导入的libs。你首先激活你的virtualenv。然后使用which
python来检测libs的位置,然后将它们传递给etags。
workon my-project # if using virtualenvwrappwer
source bin/activate # if using virtualenv
find ${$(which python)/\/bin\/python/} -type f -name '*.py' | xargs etags
答案 5 :(得分:1)
尝试使用emacs的anaconda-mode和company-anaconda个软件包。更新配置:
(eval-after-load "company"
'(add-to-list 'company-backends 'company-anaconda))
(add-hook 'python-mode-hook 'anaconda-mode)
(add-hook 'python-mode-hook 'company-mode)
如果您有pythonic-activate
,请切换到带有M-.
的virtualenv。
现在你已经M-*
了,你可以按# column1 column2 column3 column4
# 0 1 ww 1 Sam
# 1 2 ss 2 Bill
# 2 None None 3 Jack
lst = [[4, 'Jin'], [5, 'Carl']]
app = pd.DataFrame([[None, None, x[0], x[1]] for x in lst],
columns=['column'+str(i) for i in range(1, 5)])
df = df.append(app, ignore_index=True)
# column1 column2 column3 column4
# 0 1 ww 1 Sam
# 1 2 ss 2 Bill
# 2 None None 3 Jack
# 3 None None 4 Jin
# 4 None None 5 Carl
返回!