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

Python3无法在sys.path中加载模块,python,python-3.x,python-module,Python,Python 3.x,Python Module,同事们 考虑以下代码: 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 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()
添加print语句表明
sys.path
是我所期望的,并且在该目录中可以找到我的\u pkg的
\uuuuuu init\uuuuuuuuuuuupy

但是,该代码会导致一个错误:

Traceback (most recent call last):
  File "<string>", line 9, in <module>
ModuleNotFoundError: No module named 'my_pkg'
回溯(最近一次呼叫最后一次):
文件“”,第9行,在
ModuleNotFoundError:没有名为“my_pkg”的模块
如您所见,我们在特定Python目录的
站点包中安装了一个
my_pkg
。我想加载这个包,不管使用的是Python版本。
\uuuu init\uuuu.py
中没有检查Python版本或类似内容的代码

为什么Python不能加载模块?是否有技术原因导致我无法从不同Python版本的
站点包
下面加载模块?如果有某种代码问题,我希望看到阻塞,而不是
找不到它…

我怎样才能最好地调试它

谢谢


已解决:解决方案(由@VPfB提供)是只添加到
站点包的路径。不需要在路径中包含模块的名称。由于我在
sys.path

的第一个位置插入,因此我会小心来自该目录的任何其他模块。问题出在错误的子目录中:


如果您有
/some/path/my_-pkg/\uuu-init\uu-py
,则可以在
/some/path
目录中找到
my_-pkg
包。您的代码将插入到
sys.path
/some/path/my_pkg
目录中。

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


如果您有
/some/path/my_-pkg/\uuu-init\uu-py
,则可以在
/some/path
目录中找到
my_-pkg
包。您的代码将插入到
sys.path
/some/path/my_-pkg
目录中。

也许您需要使用pip安装
my_-pkg
(例如:从
my_-pkg
目录中运行
pip安装-e.
)。也许这可以帮助您:也许您需要使用pip安装
myu-pkg
(例如:从
myu-pkg
目录中运行
pip-install-e.
)。也许这可以帮助你:就是这样!谢谢@VPfB!我很高兴能帮上忙,就这样!谢谢@VPfB!我很高兴能帮上忙。