【发布时间】:2023-04-03 07:40:01
【问题描述】:
我将我自己编写的 Python 脚本组织在一个包含多个子目录的树中,
从已经包含在 settings-json 中的"python.autoComplete.extraPaths" 中的父目录“Scripts”开始:
"python.autoComplete.extraPaths": ["/home/andylu/Dokumente/Allgemeines_material/Sonstiges/Programming/Python/Scripts",
"/home/andylu/anaconda3/lib/python3.7/site-packages"]
除此之外,我还包含了一个 Python 环境文件:
"python.envFile": "/home/andylu/Dokumente/Allgemeines_material/Sonstiges/Programming/Visual_studio_code/vscode_own_scripts.env"
其中包含该行
export PYTHONPATH=/home/andylu/Dokumente/Allgemeines_material/Sonstiges/Programming/Python/Scripts:/home/andylu/anaconda3/lib/python3.7/site-packages
所有这些在之前都做得很好,我的所有脚本都分布在超过 1 个单一目录级别,如下所示:
+---Scripts
| +---General
| | +---script_one.py
| | +---script_two.py
当我在任何 python 脚本中导入时,例如script_one.py,
我用
import sys
sys.path.append(
"/home/andylu/Dokumente/Allgemeines_material/Sonstiges/Programming/Python/Scripts/"
)
import General.script_one as one
并且 pylint 正确地识别了这个导入的脚本没有抛出前面提到的VS Code pylint(import-error)。
现在情况不同了。脚本变得如此之多,我将子文件夹General 拆分为包含一个额外的子目录级别让脚本更清晰地组织:
+---Scripts
| +---General
| | +---Plotting
| | | +---script_one.py
| | | +---script_two.py
| | +---Misc
| | | +---script_three.py
| | | +---script_four.py
....
当使用例如启动 Python 脚本时以下几行,我得到以下每个导入的VS Code pylint(import-error)。
# Package importing
import sys
sys.path.append(
"/home/andylu/Dokumente/Allgemeines_material/Sonstiges/Programming/Python/Scripts/"
)
import General.Plotting.auxiliary_plotting_functions as aux_plot
import General.Plotting.plotting as plot
#%%
# TIME MEASUREMENT for the entire code/function
import General.Misc.timing
我不知道为什么 pylint 突然停止识别导入,只是因为我添加了一个额外的子目录级别。我希望这些无意义的 pylint 导入错误消失,因为在执行代码时有效地正确导入了子子模型。
我什至尝试修改.pylintrc - 文件,它位于
/home/andylu/anaconda3/pkgs/pylint-2.3.1-py37_0/lib/python3.7/site-packages/pylint/test/regrtest_data/.pylintrc:
[MASTER]
optimize-ast=no
init-hook='import sys; sys.path.append("/home/andylu/Dokumente/Allgemeines_material/Sonstiges/Programming/Python/Scripts")'
添加init-hook - 行也没有效果。
【问题讨论】:
标签: python visual-studio-code importerror pylint pylintrc