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!我很高兴能帮上忙。