当文件位于另一个文件夹/目录

时间:2018-02-20 23:28:37

标签: python pycharm

我经常在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建议的结构。

enter image description here

然后我添加了_Linasz建议的__init__.py并且它有效:

enter image description here

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

编辑2:

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

编辑3:

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

2 个答案:

答案 0 :(得分:2)

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

from app.folder1 import name [as sub_name]

答案 1 :(得分:1)

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

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

main.py中使用标准导入:

import foo.bar

foo.bar.do_something()

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