我正在将大量包导入到其他包中。 导入的包可以毫无问题地执行,因为我使用了 Python 安装程序和正确的结构。 但 VS 代码中的链接不起作用,Pylance 给我导入错误。
我有一个名为 happyspace 的工作空间。 dist-packages 的路径是
/home/flo/happyspace/devel/lib/python3/dist-packages
所以我将其添加到我的工作区配置中:
{
"folders": [
{
"path": "."
}
],
"settings": {
"editor.fontSize": 15,
"[python]": {
"editor.defaultFormatter": "ms-python.autopep8"
},
"python.formatting.provider": "none",
"editor.defaultFormatter": null,
"python.autoComplete.extraPaths": [
"/home/flo/happyspace/devel/lib/python3/dist-packages",
"/opt/ros/noetic/lib/python3/dist-packages"
],
"python.analysis.extraPaths": [
"/home/flo/happyspace/devel/lib/python3/dist-packages",
"/opt/ros/noetic/lib/python3/dist-packages"
]
}
}
但是,在将一个包导入到另一个包中时,例如在我位于
的execute_poses_record.py中/home/flo/happyspace/src/fmp_tools/src/fmp_tools/execute_poses_record.py
线
from fmp_tracepen_node.tracepen_node import TracepenNode
出现错误
无法解析导入“fmp_tracepen_node.tracepen_node”PylancereportMissingImports (模块)fmp_tracepen_node
当要导入的文件位于
/home/flo/happyspace/src/fmp_tracepen_node/src/fmp_tracepen_node/tracepen_node.py
我刚刚意识到一件事!
更改导入结构
from fmp_tools.console_messager import ConsoleMessager
到
from fmp_tools.console_messager.src.console_messager import ConsoleMessager
导入错误消失了。
但是我不能再在 python 中导入包并得到真正的导入错误:
from fmp_tools.src.fmp_tools.console_messager import ConsoleMessager ModuleNotFoundError: No module named 'fmp_tools.src'
另外当我添加
"/home/flo/happyspace/src/fmp_tools/src"
到我的 pyhton 路径,它解决了 pylance 错误。
/home/flo/happyspace/src/fmp_tools/src/fmp_tools/console_messager.py
也是我的 ros 包的 python 文件的结构。
我听说应该这样配置包,然后构建一个像这样的setup.py
from distutils.core import setup
from catkin_pkg.python_setup import generate_distutils_setup
d = generate_distutils_setup(
packages=['fmp_tools'],
package_dir={'': 'src'}
)
setup(**d)
这有错吗?
非常感谢您的帮助。