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
这个路径,也就导入失败了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/?linkid=830387
"version": "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;
chatgpt
,说是 python3.3
以前是要创建 __init__.py
的,但现在是不需要也可以的。除此之外python的版本号貌似并不影响pyCharm
里面可以自己设定根目录,大概率是没这个问题了。VSCode
怎么你了!