【问题标题】:Emacs 24 with Elpy 1.7.50 does not recognize Python Project带有 Elpy 1.7.50 的 Emacs 24 无法识别 Python 项目
【发布时间】:2018-03-05 17:12:29
【问题描述】:

我正在从使用 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'
>>>

【问题讨论】:

    标签: python emacs


    【解决方案1】:

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

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

    M-x package-list-packages,选择弹丸(简写:i x标记为安装,执行)。

    【讨论】:

    • 能否请给问题本身添加更多上下文,而不是链接?例如,如何安装弹丸(假设它可以通过 pip 或类似方式安装)。
    • @chade_:它可以安装在 emacs 中。感谢您的反馈。
    【解决方案2】:

    请您查看~/.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 并且它可以工作(有几个怪癖:-)。

    换句话说:您可以随意自定义。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-04-27
      • 2012-07-18
      • 1970-01-01
      • 2021-12-28
      • 2020-03-30
      • 2020-10-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多