我经常在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建议的结构。
然后我添加了_Linasz建议的__init__.py并且它有效:
现在回到我的另一个项目,__ init__.py似乎不起作用。让我修补一下,看看有什么不同。
编辑2:
有趣,所以如果将包含__init__.py文件的同一个文件bar.py添加到原始项目的子文件夹中,我就无法跳转到那里的声明。所以这个项目或PyCharm对我的项目的解释肯定有问题。这是一个很大的项目,也许就是把它扔掉。
编辑3:
最后一个问题是我的一个愚蠢的错误。谢谢你们!
答案 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
中的定义。