写点什么

如何解决 Python 项目在 VScode 中跨文件夹导包问题

作者:IT蜗壳-Tango
  • 2022 年 2 月 08 日
  • 本文字数:725 字

    阅读完需:约 2 分钟

如何解决Python项目在VScode中跨文件夹导包问题

VScode 是一个非常优秀的代码编辑软件,尤其当你同时使用多门开发语言的时候。Python 目前是我的主力开发语言,可就在不久前遇到了一个很麻烦的事情---跨文件夹导入自定义包。总是提示:ModuleNotFoundError: No module named 'xxxxx'

今天终于找到了解决办法,和大家分享一下。

问题背景

我们创建了一个目录如下的 Python 工程

│ main.py

├─lib

│ ├─api_info

│ │ api.py

│ │ __init__.py

│ │

│ └─common

│ log.py

│ __init__.py

└─test

demo.py


项目需求:

在 test/demo.py 文件中引入 lib/api_info 下面的 api.py。

问题来了

我们在编写代码时是可以正常提示包里的方法

但是运行的时候会出现如下错误

我们尝试在项目的根目录下面的 main.py 进行同样的操作

可以到没有任何报错信息,因此可以判断是 test 这个文件导致的跨文件夹的问题。

解决办法

我们可以在 test 目录下面的 python 文件的开头加入如下一段代码:

import sys
sys.path.append("..")
复制代码


同样可以看到问题解决了,但是如果我有很多这样的文件夹和文件,这样的操作是很麻烦的,有没有什么好的解决办法呢?

我们可以利用.pth 文件来将我们的包添加到环境路径里面。

创建虚拟环境 env

python -m venv env
复制代码

在 site-packages 文件下面添加一个 mypath.pth 文件。该文件中写入的就是我们项目的根目录

D:\Work\API\Test
复制代码

修改后的工程目录

将 demo.py 文件中刚刚添加的内容删除,还原到最原始的状态,再次运行该文件

可以看到,没有报错。这样我们无论有多少个类似 test 这样的文件夹或者 demo.p 这样的文件,都可以正常的导入自定义的包。


好了,今天的分享就是这些,希望对你有所帮助,也欢迎大家转发该文章给有需要的朋友。

我是 Tango,一个热爱分享技术的程序猿,我们下次见。

发布于: 2022 年 02 月 08 日阅读数: 39
用户头像

一个日语专业的程序猿。 2017.09.10 加入

【坐标】无锡 【软件技能】Java,C#,Python 【爱好】炉石传说 【称号】InfoQ年度人气作者,Intel OpenVINO领航者联盟成员 【B站】https://space.bilibili.com/397260706/ 【个人站】www.it-worker.club

评论

发布
暂无评论
如何解决Python项目在VScode中跨文件夹导包问题