【问题标题】:Jump to Declaration when file is in another folder/directory当文件在另一个文件夹/目录中时跳转到声明
【发布时间】:2018-02-21 11:11:44
【问题描述】:

我经常在 PyCharm 中使用键盘快捷键“跳转到声明”。我希望我的项目结构能够方便地支持在多个文件夹/目录中拥有源代码文件。不幸的是,当尝试跳转到另一个目录中存在的函数调用时,“跳转到声明”似乎失败了。有没有办法解决这个问题或教它跳到哪里?尽管这些目录在同一个项目中,但它似乎没有索引/搜索嵌套目录。所以我不得不将我所有的源代码保存在同一个目录中,这样我就可以在 PyCharm 中有一个有效的“跳转到声明”......

我正在通过此解决方案从其他文件夹导入文件: Importing files from different folder

# some_file.py
import sys
sys.path.insert(0, '/path/to/application/app/folder')

import file

但是当我尝试通过 file.function() 的键盘快捷键“跳转到声明”时,它失败了,因为它不在我所在的当前文件的同一目录中。

编辑:

所以我创建了@Code-Apprentice 建议的结构。

然后我添加了@Lukasz 建议的 __init__.py 并且它起作用了:

现在回到我的另一个项目,__init__.py 似乎不起作用。让我修补一下,看看有什么区别。

编辑2:

有趣,所以如果将相同的文件 bar.py 添加到包含 __init__.py 文件的原始项目的子文件夹中,我无法跳转到那里的声明。所以这个项目或者PyCharm对我的项目的解释肯定有问题。这是一个大项目,也许有什么东西把它扔掉了。

编辑3:

最后一个问题是我的一个愚蠢的错误。谢谢大家!

【问题讨论】:

  • 能否给出完整的代码示例?我经常使用 Ctrl+B 跳转到 python 源文件中的声明,无论声明相对于当前源位于哪个目录。
  • 不客气!;]

标签: python pycharm


【解决方案1】:

您能添加一些代码和文件结构吗?
您需要文件夹中的空 __init__.py 文件以使其成为 python 包,因此导入将适用于模块
您也可以导入:

from app.folder1 import name [as sub_name]

【讨论】:

  • 这适用于我的示例,让我看看我是否可以成功地将它应用到我的其他项目中。
【解决方案2】:

让我们将您的项目目录称为PROJECT_ROOT。您可以在此文件夹中创建任意目录结构。例如,假设您在foo 文件夹中创建bar.py 并在PROJECT_ROOT 中创建main.py

PROJECT_ROOT
|_ foo
   |_ bar.py
|_ main.py

main.py 中使用标准导入:

import foo.bar

foo.bar.do_something()

现在将光标移动到main.pydo_something() 的用法,然后按Ctrl+B。这将跳转到foo/bar.py 中的定义。

【讨论】:

  • 设置这个项目,见上面的编辑。现在可以在示例项目中使用它了。
猜你喜欢
  • 2013-04-16
  • 2020-05-06
  • 1970-01-01
  • 1970-01-01
  • 2013-05-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-05-05
相关资源
最近更新 更多