买目录做网站,网站制作宣传,wordpress 淘宝 采集插件,给排水管道水压试验方案久久建筑网【VSCode#xff0c;Python】一劳永逸的成功导入本地模组#xff0c;PYTHONPATH的修改 起因查阅发现做法一 #xff08;推荐做#xff09;做法二 #xff08;推荐必做#xff09;踩坑点#xff08;必看#xff09; 起因
文件目录如下#xff1a;
my_project/
|-- pa… 【VSCodePython】一劳永逸的成功导入本地模组PYTHONPATH的修改 起因查阅发现做法一 推荐做做法二 推荐必做踩坑点必看 起因
文件目录如下
my_project/
|-- package1/
| |-- module1.py
|-- package2/
| |-- module2.py
|-- main.py我想在 model2.py 中导入 model1.py 但是有如下要求
直接在代码里写上 sys.path.append 来让导入成功的话不符合工程规范想象你要把工程发到github上去…使用相对导入比如 from . import xxx, from .. import xxx, from ... import xxx 大大降低可读性不符合工程规范所以只能使用绝对导入比如 from my_project.package1 import model1 但是报错 No module找不到 my_project 这个路径也就导入失败了
查阅
非常好的两篇博客VScode中通过PYTHONPATH引入自定义模块终极方案 windows下VScode修改PYTHONPATH变量方便导入模块 但是我在服务器端测试均失败在本地成功了很诡异
发现
导入本地模组或者代码的基本原理是 PYTHONPATH 是一个字符串的数组可以如下查看或者添加
import sys
print(PYTHONPATH:, sys.path)
sys.path.append(XXX)如果你的其中一个 PYTHONPATH 为 E:\\Repo\\NLP 那么你可以使用如下代码导入
from aa.bb import xxx其中 aa 是在 NLP文件夹下的子文件夹 bb 是在 aa 文件夹下的子文件夹
所以我们的目的是让 PYTHONPATH 能获得我们的项目目录的上一层 这样就可以导入 from my_project.aa import xxx 了
做法一 推荐做
在 launch.json 中添加 PYTHONPATH 这一行
{// Use IntelliSense to learn about possible attributes.// Hover to view descriptions of existing attributes.// For more information, visit: https://go.microsoft.com/fwlink/?linkid830387version: 0.2.0,configurations: [{name: Python: Current File,type: python,request: launch,program: ${file},console: integratedTerminal,justMyCode: false,env: {PYTHONPATH:${workspaceFolder};${env:PYTHONPATH}}}]
}如果你是第一次设置 launch.json那么 Add Configuration否则直接 Open 即可
【注意】【注意】【注意】【注意】【注意】 这样使用 F5 运行是可以的因为 F5 运行会使用 launch.json 但是你 console 运行 python bb.py 仍然不行
做法二 推荐必做
打开 Settings输入 terminal.integrated.env点击自己的操作系统下的那个 Edit 同理加上 PYTHONPATH 那一行即可
{git.openRepositoryInParentFolders: never,terminal.integrated.enableMultiLinePasteWarning: false,remote.SSH.remotePlatform: {172.23.148.79: linux},explorer.confirmDragAndDrop: false,security.workspace.trust.untrustedFiles: open,editor.unicodeHighlight.ambiguousCharacters: false,terminal.integrated.env.windows: {PYTHONPATH:${workspaceFolder};${env:PYTHONPATH}},
}注修改完 json 之后记得保存最好关闭 console 或者关闭 VSCode 再打开 直接就去运行可能会失败。这样使用 console 运行 python bb.py 就可以了
踩坑点必看
所以方法大差不差为什么本地可以运行服务器那边一开始跑不了呢… 因为服务器是 Linux 端 PYTHONPAT 中间用 冒号 间隔而不是 分号 间隔开不同的路径所以如果你是 Linux 端务必写成
PYTHONPATH:${workspaceFolder}:${env:PYTHONPATH},不然你就会发现你的 sys.path 打印出来后是 /xxx/xxx; 这边多了个分号你自然拿不到下面子目录的包了… 这个还贼难看出来不好好 debug 是真一直一头雾水问 chatgpt说是 python3.3 以前是要创建 __init__.py 的但现在是不需要也可以的。除此之外python的版本号貌似并不影响顺带一提pyCharm 里面可以自己设定根目录大概率是没这个问题了。 VSCode 怎么你了