不同 OS 上的 ModuleNotFoundError,本地包设置相同
ModuleNotFoundError on different OS with same setup for local package
本质上,主要问题是在 Ubuntu 上没有看到要导入的包,而在 Windows.[=22 上是 Git Bash =]
这是相关的目录结构,库文件夹是有问题的 package/module。
project-dir/
services/
task.py
library/
__init__.py
module.py
在 task.py
文件中,我有采用以下语法的导入:
from library.module import function
在 project-dir
文件夹中,我 运行 以下命令:python services/task.py
.
在 Git Bash 在 Windows 上,这非常有效。但是,在 Ubuntu 上,我得到了一个 ModuleNotFoundError
抛出。以下是抽象的上述错误:
Traceback (most recent call last):
File "services/task.py", line 3, in <module>
from library.module function
ModuleNotFoundError: No module named 'library'
注意:我看到 ,这看起来与我的问题非常相似,但是向 PYTHONPATH
添加内容并没有解决问题。这是 PYTHONPATH
对我的输出:
/home/username/.local/lib/python3.6/site-packages:/usr/lib/python3.6:/usr/lib/python3.6/lib-dynload:/usr/local/lib/python3.6/dist-packages:/usr/lib/python3/dist-packages
由于没有人发布答案,@forty_two 恰好让我了解了我需要做什么,我将解释我对他的建议的实施。
我在服务目录中创建了一个名为 add_project_path.py
的文件。脚本内容如下:
import sys
import os
# Adds the project path
sys.path.append(os.path.dirname(os.path.dirname(os.path.realpath(__file__))))
这会获取 add_project_path.py
的路径,获取它所在的目录,并获取该目录的父目录,即项目文件夹。然后,将项目文件夹添加到路径中,问题就解决了。
编辑:
此外,为了进一步解释,我在 task.py
的导入顶部添加了 import add_project_path
,这允许 add_project_path
模块在任何其他模块之前导入项目路径发生进口。
本质上,主要问题是在 Ubuntu 上没有看到要导入的包,而在 Windows.[=22 上是 Git Bash =]
这是相关的目录结构,库文件夹是有问题的 package/module。
project-dir/
services/
task.py
library/
__init__.py
module.py
在 task.py
文件中,我有采用以下语法的导入:
from library.module import function
在 project-dir
文件夹中,我 运行 以下命令:python services/task.py
.
在 Git Bash 在 Windows 上,这非常有效。但是,在 Ubuntu 上,我得到了一个 ModuleNotFoundError
抛出。以下是抽象的上述错误:
Traceback (most recent call last):
File "services/task.py", line 3, in <module>
from library.module function
ModuleNotFoundError: No module named 'library'
注意:我看到 PYTHONPATH
添加内容并没有解决问题。这是 PYTHONPATH
对我的输出:
/home/username/.local/lib/python3.6/site-packages:/usr/lib/python3.6:/usr/lib/python3.6/lib-dynload:/usr/local/lib/python3.6/dist-packages:/usr/lib/python3/dist-packages
由于没有人发布答案,@forty_two 恰好让我了解了我需要做什么,我将解释我对他的建议的实施。
我在服务目录中创建了一个名为 add_project_path.py
的文件。脚本内容如下:
import sys
import os
# Adds the project path
sys.path.append(os.path.dirname(os.path.dirname(os.path.realpath(__file__))))
这会获取 add_project_path.py
的路径,获取它所在的目录,并获取该目录的父目录,即项目文件夹。然后,将项目文件夹添加到路径中,问题就解决了。
编辑:
此外,为了进一步解释,我在 task.py
的导入顶部添加了 import add_project_path
,这允许 add_project_path
模块在任何其他模块之前导入项目路径发生进口。