Python VSCode .env解决No module named “ .... “

解决在使用VSCode和Python时,自定义库时出现 No module Named '...'的问题

问题描述

当我们有以下项目结构时。

├── package
│   ├── __init__.py
│   └── utils.py
└── script
    └── test.py

其中package中是我们自己写的库,其中utils.py__init__.py文件如下

from .utils import add, mul

def add(a, b):
    return a + b


def mul(a, b):
    return a * b

另外我们还有一个脚本文件夹,用来做一些测试等

from package import add


print(add(1, 4))

当我们运行test.py时,会出现No module named 'package' 报错
image.png

原因分析

我们修改一下test.py的内容

import sys
print(sys.path)

from package import add


print(add(1, 4))

运行,依旧报错No module named 'package',但是我们打印出来了sys.path

['/Users/jay/SpaceForCode/test/未命名文件夹/script', 
 '/opt/homebrew/Caskroom/miniconda/base/lib/python310.zip', 
 '/opt/homebrew/Caskroom/miniconda/base/lib/python3.10', 
 '/opt/homebrew/Caskroom/miniconda/base/lib/python3.10/lib-dynload', 
 '/Users/jay/.local/lib/python3.10/site-packages', 
 '/opt/homebrew/Caskroom/miniconda/base/lib/python3.10/site-packages']

可以看到sys.path中并未有我们当前项目文件夹,虽然有/Users/jay/SpaceForCode/test/未命名文件夹/script文件夹,但是我们的package库并不在该文件夹下,所以一定会有No module named ' package'

如何解决

  1. 手动添加项目文件夹路径到sys.path
import sys
import pathlib

sys.path.append(str(pathlib.Path(__file__).parent.parent.resolve()))
print(sys.path)


from package import add


print(add(1, 4))

此时我们可以看到我们的项目文件夹路径已经被添加到sys.path中,程序也可以正常运行
image.png

  1. 当我们使用VSCode时,可以添加.env文件添加PYTHONPATH环境变量。
    1. 首先确认已经配置环境变量文件的绝对路径

image.png

  2. 在项目文件夹下创建.env文件,写入环境变量`PYTHONPATH=your-work-space-folder-path`

image.png

  3. 重新加载vscode窗口并且重新关闭已经打开的终端并重新打开终端以加载环境变量文件

image.png

  4. 运行即可 

image.png

  1. 调试运行
    1. 创建launch文件,launch文件中默认会使用项目文件夹下的.env环境变量文件,然后直接F5运行指定py文件即可

image.png
image.png

  1. 修改工作区终端环境变量配置文件(不同平台使用不同的配置),然后重载vscode窗口并且重新打开终端即可

在这里插入图片描述 在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值