如何解决Python项目在VScode中跨文件夹导包问题
VScode是一个非常优秀的代码编辑软件,尤其当你同时使用多门开发语言的时候。Python目前是我的主力开发语言,可就在不久前遇到了一个很麻烦的事情---跨文件夹导入自定义包。总是提示:
今天终于找到了解决办法,和大家分享一下。
问题背景
我们创建了一个目录如下的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,一个热爱分享技术的程序猿,我们下次见。