从其他文件夹导入模块:如何在 Spyder 或 PyCharm 中显示函数参数?

Posted

技术标签:

【中文标题】从其他文件夹导入模块:如何在 Spyder 或 PyCharm 中显示函数参数?【英文标题】:Importing modules from other folders: how to display function arguments in Spyder or PyCharm? 【发布时间】:2021-05-23 09:47:37 【问题描述】:

关于如何从其他文件夹导入模块有很多答案。

答案似乎总是如下:

import sys
sys.path.insert(0,"c://UserName//MyFolder//MyBeautifulCode")
import myscript as ms

之后您可以运行 ms.my_fun(x,y,z),其中 my_fun() 在 c://UserName//MyFolder//MyBeautifulCode//myscript.py 中定义

代码运行;但是,不起作用的是,这样,我没有得到显示 my_fun() 参数的常用工具提示;相反,如果我将myscript.py 复制到与我当前正在运行的脚本完全相同的文件夹中,那么,是的,我确实得到了工具提示。 我的意思是我看不到这样的东西:

我已经尝试过 PyCharm 和 Spyder,在这方面,两者的行为是相同的。

我想这是因为 c://UserName//MyFolder//MyBeautifulCode//myscript.py 仅在脚本运行时才添加到路径中,因此在运行之前,IDE 找不到 my_fun()

这是正确的吗? 如果是这样,是否是手动将c://UserName//MyFolder//MyBeautifulCode//myscript.py 添加到路径的唯一解决方案?

顺便说一下,我说的是我在运行的 3 个独立程序中重用的几个函数。它不值得在 github 或 pip 上作为一个包或类似的东西发布。

【问题讨论】:

【参考方案1】:

对于 PyCharm,您还需要设置项目的 venv 设置以包含该路径。一开始我花了很多时间才找到它——我用谷歌搜索这个!但显然 PyCharm 更深地隐藏了这个选项......好吧,你自己看看。

进入设置,项目:[你的项目名称],Python解释器

看到右边的齿轮了吗?点击它,“显示全部”。这将显示出来,列出 PyCharm 可以用于您的项目的所有 venv:

选择您的 venv 后,单击底部的最后一个图标。图标看起来有点像文件夹结构。

现在我们可以看到 PyCharm 中所选解释器识别的所有路径。我们可以点击+添加新路径。手动添加的路径最后会有“(用户添加)”,如图所示。

【讨论】:

谢谢!我是否需要为每个项目都这样做,或者有没有办法告诉 PyCharm 将该文件夹添加到每个项目的路径中?顺便说一句,这证实了我的印象,即 PyCharm 非常强大但也非常非常难以使用! @Pythonistaan​​onymous 在我的情况下,我对多个项目使用相同的 venv(因为它们部署在同一个系统中,我无法在那里安装新包 - 无论如何,venv 都保持不变)。在为您的项目选择 venv 时,您必须选择使 venv 可用于其他项目的选项 - 然后在其他项目中选择它而不是每次都创建新的 venv。【参考方案2】:

如果您在代码中的 Python 路径中插入一个路径,它只会在运行时被解释。要让您的 IDE 了解您的库,您必须将其添加到 Python 路径,例如就像这个问题中描述的那样:https://***.com/a/55209725/5660315。

【讨论】:

此解决方案是否特定于 IDE,即每个 IDE 会有类似的设置吗?或者,如果我将 fodler 添加到 Python 路径,那么每个 IDE 都会找到它? 每个 IDE 都有类似的设置,因为生成工具提示的代码是(编译的)Python 代码,也需要 Python 路径。

以上是关于从其他文件夹导入模块:如何在 Spyder 或 PyCharm 中显示函数参数?的主要内容,如果未能解决你的问题,请参考以下文章

Python spyder 调试因循环导入而冻结

Spyder:如何导入/导出语法着色方案?

从命令行运行 python 要求我导入模块

如何从python中的其他目录导入模块? [复制]

如何将 conda 库导入单独的 Spyder 发行版?

如何从其他(非项目)目录将 React 组件作为包/模块导入?