带有Elpy 1.7.50的Emacs 24无法识别Python项目

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了带有Elpy 1.7.50的Emacs 24无法识别Python项目相关的知识,希望对你有一定的参考价值。

我正在使用Eclipse转换为Emacs 24.3和Elpy 1.7.50进行Python开发。但是,我遇到了让Elpy认识我的项目的障碍。基于我对elpy应该从documentation工作的方式的理解,如果我设置项目根文件夹,该文件夹应该包含在sys.path中以搜索模块。这不会发生。

Elpy Documentation似乎对我的特殊难题没有任何答案,也没有找到一个基本的教程,引导我创建我的第一个Elpy项目来分解它并告诉我我做错了什么。

在shell中,我首先使用virtualenv中的mkvirtualenv创建虚拟环境virtualenvwrapper。然后我在virtualenv文件夹中创建以下文件夹/文件结构:

virtualenv/
└─ my_project/
   ├─ src/
   │  └─ my_project/
   │     ├─ __init__.py
   │     └─ foo.py
   └─ test/

foo.py的内容是:

class foo(object):
    pass


if __name__ == '__main__':
    pass

接下来,我使用Emacs客户端连接到已经运行的Emacs服务器实例。在Emacs中,我输入:

M-x pyvenv-workon virtualenv

Emacs确实在模式行中显示[my_project]。接下来,我输入:

M-x elpy-set-project-root ~/Projects/my_project/src

然后,我输入C-cC-f来搜索项目中的文件,然后我得到:

C-c C-f is undefined

所以,我输入:

M-x elpy-find-file

我得到:

No project root found

如果我使用以下代码创建文件test/test_foo.py

from my_project import foo

if __name__ == '__main__':
    pass

然后使用C-cC-c运行它,我得到:

>>> Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/home/doug/Projects/my_project/src/test/test_foo.py", line 1, in <module>
    from my_project import foo
ImportError: No module named 'my_project'
>>>
答案

你能评论一下~/.emacs.d/elpa/find-file-in-project-3.3/find-file-in-project.el吗?关于项目定义标准有几个字符串,我发现:

(require 'cl)
(defvar ffip-project-file ".git"
  "The file that should be used to define a project root.

我已经在我的git repo中测试了M-x elpy-set-project-root和M-x elpy-find-file,它有效(有几个怪癖:-)。

换句话说:随意自己定制。

另一答案

你试过安装弹丸吗?它解决了https://github.com/jorgenschaefer/elpy/issues/957Set Python project root in Emacs?的类似问题。

您可以通过emacs的包管理器安装弹丸:

M-x package-list-packages,选择projectile(shorthands:i x标记为安装和执行)。

以上是关于带有Elpy 1.7.50的Emacs 24无法识别Python项目的主要内容,如果未能解决你的问题,请参考以下文章

Emacs之Python编程环境配置 - elpy

emacs elpy代码补全功能

Emacs Python 自动补全--Elpy

Emacs shell 无法识别 python 命令

IOS 7无法识别的选择器发送到带有按钮的实例问题

NSInvalidArgumentException setSizeHasBeenSet 无法识别的选择器 - 带有属性文本