在示例中找不到Python自定义模块

2024-03-29 13:55:16 发布

您现在位置:Python中文网/ 问答频道 /正文

我在一个python项目中工作,我正在开发一个自定义库(mylib)并使用vscode。你知道吗

/
└── mylib
    └── __init__.py
    ├── ...

如果我的程序分裂_示例.py位于根目录下,如下所示,我可以导入并使用mylib。你知道吗

/
└── mylib
    └── __init__.py
    ├── ...
└── split_example.py

我想创建一个名为examples的文件夹并使用mylib,但在文件夹examples中,我无法导入和使用mylib。你知道吗

/
└── mylib
    └── __init__.py
    ├── ...
└── examples
    └── split_example.py

获取以下错误:

Traceback (most recent call last):
  File "/home/kleysonr/.vscode/extensions/ms-python.python-2019.11.50794/pythonFiles/ptvsd_launcher.py", line 43, in <module>
    main(ptvsdArgs)
  File "/home/kleysonr/.vscode/extensions/ms-python.python-2019.11.50794/pythonFiles/lib/python/old_ptvsd/ptvsd/__main__.py", line 432, in main
    run()
  File "/home/kleysonr/.vscode/extensions/ms-python.python-2019.11.50794/pythonFiles/lib/python/old_ptvsd/ptvsd/__main__.py", line 316, in run_file
    runpy.run_path(target, run_name='__main__')
  File "/usr/lib/python3.6/runpy.py", line 263, in run_path
    pkg_name=pkg_name, script_name=fname)
  File "/usr/lib/python3.6/runpy.py", line 96, in _run_module_code
    mod_name, mod_spec, pkg_name, script_name)
  File "/usr/lib/python3.6/runpy.py", line 85, in _run_code
    exec(code, run_globals)
  File "/data/dev/python/myproject/examples/split_example.py", line 3, in <module>
    from mylib.dataset import split
ModuleNotFoundError: No module named 'mylib'

我应该怎么做才能让文件夹examples中的任何程序能够from mylib.dataset import split?你知道吗


Tags: runnameinpymainliblinevscode
2条回答

问题是,由于您是通过python examples/split_example.py执行代码,Python将examples/作为当前的工作目录,因此您的mylib目录对Python不可见。您可能更愿意做的是python -m examples.split_example,因为这将使当前工作目录成为项目根目录,从而使mylib对Python可见。你知道吗

这也需要将__init__.py添加到examples。你知道吗

基于@fabioconcina的评论,我找到了这个解决方案。你知道吗

只需在文件顶部包含以下内容:

from os import sys, path
PARENT_DIR = path.dirname(path.dirname(path.abspath(__file__)))
sys.path.append(PARENT_DIR)

相关问题 更多 >