在项目中找不到模块(Python)

在项目中找不到模块(Python),python,module,pytest,Python,Module,Pytest,我是一个初学者,我不理解项目文件夹结构中的某些内容 我有这个项目: . └── convertersProject/ ├── conftest.py -----------------> best practice if you're not using src structure ├── converters -----------------> module I'm trying to import/ │ ├── __init__.py │

我是一个初学者,我不理解项目文件夹结构中的某些内容

我有这个项目:

.
└── convertersProject/
    ├── conftest.py -----------------> best practice if you're not using src structure
    ├── converters  -----------------> module I'm trying to import/
    │   ├── __init__.py
    │   ├── binconverter.py
    │   └── importester1.py  --------> import binconverter OR from converters import */
    │       └── submodule/
    │           ├── __init__.py -----> not needed if I don't want to use it as package
    │           └── importester2.py -> from converter import binconverter 
    ├── outsidemodule  /
    │   ├── importester3.py
    │   └── __init__.py 
    └── test /
        └── test_converters.py
当我试图直接从项目文件夹执行importester1/2/3.py时,总是收到
modulenorfound
。我使用的是一个虚拟环境,使用pyenv python-m venv'name'从pyenv python 3.8.5设置为
pyenv shell 3.8.5

我认为我理解的是:

  • 我必须使用绝对路径作为来自转换器的
    。binconverter导入bin2dec
    是binconverter中的bin2dec函数。如果我想使用relative,我应该在文件夹树中尝试执行
    importertest2.py
    ,因为
    子模块
    转换器
    中。因此,我不能将亲属用于
    outsidemodule
  • PYTHONPATH是您正在执行的当前文件夹,因此,如果我以python converters/submodule/importester2.py的形式从项目文件夹执行,我不必向虚拟环境的PYTHONPATH附加任何值(事实上,我读到这不是一个好的做法)
  • \uuuu init\uuuuu.py
    允许您使用模块,而无需将值附加到PYTHONPATH virtualenv,因此我可以使用绝对路径
    转换器
    模块导入
    外部模块
  • 测试使用此逻辑运行。事实上,如果我更改了某些内容,VSCode调试器会检测到
    import
    问题

我到底遗漏了什么?

将init文件添加到所有文件夹中。即使是根,我已经做了,但它不起作用。事实上,它目前在我的项目文件夹中。这很奇怪吗??请帮忙。我已经处理这个问题两天了,我能够加载项目模块的唯一方法是通过setup.py安装它们。好的,PYTHONPATH不是一个现有的变量,您必须在控制台中临时使用export创建它,或者在IDE中正确配置它。我使用的VS代码不会自动执行此操作。这对于调试是必不可少的。无论如何谢谢你!