Python+VScode 两个不同文件夹里的py文件相互调用|python的模块调用|绝对导入

第一次用VScode写python遇到了模块无法识别的问题,搞了一整天,

上网查,chatGPT都不行,现在时解决了。

首先项目结构如下,四个文件夹,四个py文件

代码:

def f1fun():
    print("f1")
def f2fun():
    print("f2")

print("f2 Run:")

from d1 import f1
f1.f1fun()

from d3.d4 import f4
f4.f4fun()
def f4fun():
    print("f4")
from d1 import f1
from d2 import f2
from d3.d4 import f4

print("main Run:")
f1.f1fun()
f2.f2fun()
f4.f4fun()

现在运行f2 .py

报错:No module named 'd1'

在VScode里不像PyCharm模块不能直接点击运行,要使用终端命令行

确保首先对所有py文件ctrl+c保存,保存了代码才能生效

如上图所示,在VScode里点击TERMINAL,打开终端,输入

python -m d2.f2

成功在f2.py里运行了另外两个不同文件夹内f1.py,f4.py的函数

同时左边的项目结构也发生了变化,勾红的是刚刚运行时自动多出来的文件,至关重要,

而且名字也是有特点的,f1.py对应了f1.cpython-312.pyc,

即xxx.py对应xxx.cpython-312.pyc

关键点

如果你的VScode能生成上面那种的文件,那就不能运行成功

或者生成的不是对应的不如xxx.py对应yyy.cpython-312.pyc,也是不能成功的。

那么ctrl+shift+p,输入pythonsel,选择点击

然后选择好已经安装的Python,从而确保VScode能找到

这样如果还不行,那就试试开始页里有没有python、jupiter的new选项,

这里有一个java的updated选项,因为我点过了,所有没有显示了。

如果有,点击new然后在出现的页面把所有都勾选上。然后回来再运行看看

对于根目录下的main.py则没用那么麻烦可以直接点击运行

有需要进一步了解的可以私信。

### 解决 VSCodePython导入后无法使用的问题 #### 检查并配置 Python 解释器 确保选择了正确的 Python 解释器对于解决库导入问题是至关重要的。可以通过点击状态栏中的 Python 版本来更改解释器,选择一个已知含所需库的虚拟环境或全局环境[^1]。 #### 安装缺失的依赖库 如果 `main.py` 文件中尝试导入某些特定模块(比如 `numpy`, `matplotlib`),而这些模块并未安装在当前使用的 Python 环境下,则会引发错误。可以利用终端执行如下命令来进行库的安装: ```bash pip install numpy matplotlib ``` 这将为选定的 Python 解释器安装指定版本的 NumPy 和 Matplotlib 库。 #### 设置工作区的 PYTHONPATH 或修改 `sys.path` 当遇到自定义模块导入失败的情况时,一种常见做法是在项目根目录下的 `.env` 文件设定 `PYTHONPATH` 来指向源码所在位置;另一种方式则是通过编程手段动态调整 `sys.path` 列表,在脚本开头加入必要的路径条目[^2]。 #### 修改 launch.json 配置文件 为了更好地支持调试功能以及处理复杂的工程结构,可以在项目的 `.vscode/launch.json` 文件内添加适当的参数,例如 `"cwd"` 参数用于指明程序的工作目录,从而帮助定位到正确的资源路径[^3]。 ```json { "version": "0.2.0", "configurations": [ { "name": "Python: 当前文件", "type": "python", "request": "launch", "program": "${file}", "console": "integratedTerminal", "justMyCode": true, "cwd": "${workspaceFolder}" } ] } ``` 上述 JSON 片段展示了如何配置启动项以便于更灵活地控制应用程序的行为。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值