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
目录中。
同事们!
考虑这段代码:
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
目录中。