背景
在自己写的包中使用到joblib和setuptools,在导入的时候经常容易卡主,一次严重影响到了生产,故尝试解决。
File "/root/xxxx/xxxx/util/dependencies.py", line 25, in <module>
from joblib import delayed, load, dump
File "/root/miniconda/envs/py39/lib/python3.9/site-packages/joblib/__init__.py", line 113, in <module>
from .memory import Memory, MemorizedResult, register_store_backend
File "/root/miniconda/envs/py39/lib/python3.9/site-packages/joblib/memory.py", line 32, in <module>
from ._store_backends import StoreBackendBase, FileSystemStoreBackend
File "/root/miniconda/envs/py39/lib/python3.9/site-packages/joblib/_store_backends.py", line 15, in <module>
from .backports import concurrency_safe_rename
File "/root/miniconda/envs/py39/lib/python3.9/site-packages/joblib/backports.py", line 22, in <module>
import distutils # noqa
File "<frozen importlib._bootstrap>", line 1007, in _find_and_load
File "<frozen importlib._bootstrap>", line 982, in _find_and_load_unlocked
File "<frozen importlib._bootstrap>", line 925, in _find_spec
File "/root/miniconda/envs/py39/lib/python3.9/site-packages/_distutils_hack/__init__.py", line 97, in find_spec
return method()
File "/root/miniconda/envs/py39/lib/python3.9/site-packages/_distutils_hack/__init__.py", line 108, in spec_for_distutils
mod = importlib.import_module('setuptools._distutils')
File "/root/miniconda/envs/py39/lib/python3.9/importlib/__init__.py", line 127, in import_module
return _bootstrap._gcd_import(name[level:], package, level)
File "/root/miniconda/envs/py39/lib/python3.9/site-packages/setuptools/__init__.py", line 16, in <module>
import setuptools.version
File "/root/miniconda/envs/py39/lib/python3.9/site-packages/setuptools/version.py", line 1, in <module>
import pkg_resources
File "<frozen importlib._bootstrap>", line 211, in _lock_unlock_module
File "<frozen importlib._bootstrap>", line 107, in acquire
KeyboardInterrupt
解决
我有三个实验环境,其中有两个遇到了问题,仅有一个是正常的。
- 首先根据日志中提到的包,逐个比较三个环境中包版本的异同,发现正常的环境中普遍包的版本都更低一点。考虑是否需要降级,但是优先考虑是否升级包版本能解决。
- 逐个导入上述包,发现单独导入都是可以的,并且除了pkg_resources外都能查看到版本。
- 根据抛出的异常信息,由下至上逐个升级,发现pkg_resources找不到包,于是接定位到setuptools,升级67.4.0后发现问题解决了
- 两个有问题的环境分别升级后都发现问题解决了。原本两个有问题的环境中的setuptools是65.6.3和65.5.1,正常的环境是62.1.0.把有问题的环境升级到67.4.0就可以了。
后续更新
https://stackoverflow.com/questions/7446187/no-module-named-pkg-resources
朋友给我发了这个帖子,原来问题的关键可能不在于setuptools的版本,而在升级或重装。