Python3 无法在 sys.path 内加载模块

Python3 Cannot Load Module Within sys.path

同事们!

考虑这段代码:

import os, sys, glob
_p = glob.glob(os.path.abspath(os.environ['MY_ROOTDIR'] +
        '/opensrc/Python-*/lib/python*/site-packages/my_pkg'))
if _p and os.path.isfile(_p[0] + '/__init__.py'):
  sys.path.insert(0, _p[0])
  from my_pkg.all import *
else:
  print("FATAL: Cannot find valid my_pkg module.")
  quit()

添加打印语句显示 sys.path 是我所期望的,并且在该目录中找到了 my_pkg 的 __init__.py

然而,代码导致错误:

Traceback (most recent call last):
  File "<string>", line 9, in <module>
ModuleNotFoundError: No module named 'my_pkg'

如您所见,我们在特定 Python 目录的 site-packages 中安装了一个 my_pkg。我想加载那个包,不管正在使用的 Python 版本。 __init__.py 中没有检查 Python 版本或类似内容的代码。

为什么Python无法加载模块?是否存在技术原因导致我无法从不同 Python 版本的 site-packages 下面加载模块?如果存在某种代码问题,我希望看到阻塞而不仅仅是 can't find it....

我怎样才能最好地调试它?

谢谢!

已解决:解决方案(由@VPfB 提供)仅添加到 site-packages 的路径。在路径中包含模块的名称是不必要的。我会小心可能来自该目录的任何其他模块,因为我在 sys.path.

中的第一个位置插入

问题出在错误的子目录中:

如果您有 /some/path/my_pkg/__init__py,那么可以在 /some/path 目录中找到 my_pkg 包。您的代码将插入到 sys.path/some/path/my_pkg 目录中。