在项目中找不到模块(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函数。如果我想使用relative,我应该在文件夹树中尝试执行。binconverter导入bin2dec
,因为importertest2.py
在子模块
中。因此,我不能将亲属用于转换器
outsidemodule
- PYTHONPATH是您正在执行的当前文件夹,因此,如果我以python converters/submodule/importester2.py的形式从项目文件夹执行,我不必向虚拟环境的PYTHONPATH附加任何值(事实上,我读到这不是一个好的做法)
允许您使用模块,而无需将值附加到PYTHONPATH virtualenv,因此我可以使用绝对路径\uuuu init\uuuuu.py
将
模块导入转换器
外部模块
测试使用此逻辑运行。事实上,如果我更改了某些内容,VSCode调试器会检测到
问题import
我到底遗漏了什么?将init文件添加到所有文件夹中。即使是根,我已经做了,但它不起作用。事实上,它目前在我的项目文件夹中。这很奇怪吗??请帮忙。我已经处理这个问题两天了,我能够加载项目模块的唯一方法是通过setup.py安装它们。好的,PYTHONPATH不是一个现有的变量,您必须在控制台中临时使用export创建它,或者在IDE中正确配置它。我使用的VS代码不会自动执行此操作。这对于调试是必不可少的。无论如何谢谢你!