Python 为什么我的项目在所有目录都有_uinit\u uuuu.py的情况下失败并出现ModuleNotFoundError?

Python 为什么我的项目在所有目录都有_uinit\u uuuu.py的情况下失败并出现ModuleNotFoundError?,python,Python,首先,我不是python专家 我有一个由PyChart在Mac上运行的项目,它运行得很好。由于我回到了Windows,我想在Windows Linux子系统a.k.a.Ubuntu Bash命令行中运行我的python项目。原因如下: Ubuntu为处理不同的python版本提供了更大的灵活性 我连接到kerberized Impala,在这里需要thrift ssl和其他软件包,它们是在安装时编译的,在Windows上我遇到了安装这些软件包的困难。Ubuntu工作起来很有魅力。由于此原因,W

首先,我不是python专家

我有一个由PyChart在Mac上运行的项目,它运行得很好。由于我回到了Windows,我想在Windows Linux子系统a.k.a.Ubuntu Bash命令行中运行我的python项目。原因如下:

  • Ubuntu为处理不同的python版本提供了更大的灵活性
  • 我连接到kerberized Impala,在这里需要thrift ssl和其他软件包,它们是在安装时编译的,在Windows上我遇到了安装这些软件包的困难。Ubuntu工作起来很有魅力。由于此原因,Windows上的PyCharm不是一个选项
  • 我连接到的服务需要kerberos身份验证。在Windows上运行的PyCharm可以管理Ubuntu的运行,并在那里执行开发的脚本,但是kerberos(kinit)身份验证带来了额外的复杂性,需要我将域密码放入脚本或文件中。这对我来说是不可能的
因此,我将我的项目转移到Ubuntu Bash。我创建了virtualenv,激活它并尝试运行我的脚本。它失败,出现以下错误:

(venv) desktop@DESKTOP-ST034M2:/mnt/c/DEV/project$ ./etl/finance/exports/export.py
Traceback (most recent call last):
  File "./etl/finance/exports/export.py", line 5, in <module>
    from util import db_connection
ModuleNotFoundError: No module named 'util'
export.py是什么样子的:

project/
project/__init__.py

project/etl/
project/etl/__init__.py

project/etl/finance/
project/etl/finance/__init__.py

project/etl/finance/exports
project/etl/finance/exports/__init__.py
project/etl/finance/exports/export.py

project/util
project/util/__init__.py
project/util/db_connection.py
#!/usr/bin/python3
import csv
import datetime

from util import db_connection

c = db_connection.Connect("finance_db")
在每个目录中都有
\uuuu init\uuuu.py
意味着——至少对我来说——python将目录作为包/模块进行管理,因此我可以包含来自不同目录的python文件。因此,我的假设是,如果我从
project
目录(即项目根目录)执行脚本,那么python应该在目录中找到文件

我做错了什么?我应该设置和/或检查哪些其他参数才能运行脚本?

试试看

PYTHONPATH=. python youstartfile.py

您是否将其作为模块运行
python-m项目
?不,我尝试以脚本形式执行单个文件。如果包的父目录路径不在您的
sys.path
中,则拥有一个正确的包是无用的。您需要这样做。另请参见。它解决了问题,但不幸的是,导入的文件还有其他导入失败。。。我必须重新考虑从命令行运行它的整个
。。。