Comment résoudre l'erreur « Can’t perform this operation for unregistered loader type »
Problème
Récemment, j’ai commencé à ajouter des tests unitaires utilisant setuptools à l’un de mes paquets.
Pour ce faire, j’ai ajouté un répertoire test contenant MyUnitTest.py. setup.py était correctement configuré avec l'
setup.py
test_suite="tests"option.
Cependant, lors de l’exécution de
run_tests.sh
python setup.py testj’ai obtenu ce message d’erreur :
setup_output.txt
running test
running egg_info
writing MyPackage.egg-info/PKG-INFO
writing top-level names to MyPackage.egg-info/top_level.txt
writing dependency_links to MyPackage.egg-info/dependency_links.txt
reading manifest file 'MyPackage.egg-info/SOURCES.txt'
reading manifest template 'MANIFEST.in'
writing manifest file 'MyPackage.egg-info/SOURCES.txt'
running build_ext
Traceback (most recent call last):
File "setup.py", line 29, in <module>
'Topic :: Scientific/Engineering :: Information Analysis'
File "/usr/lib/python3.4/distutils/core.py", line 148, in setup
dist.run_commands()
File "/usr/lib/python3.4/distutils/dist.py", line 955, in run_commands
self.run_command(cmd)
File "/usr/lib/python3.4/distutils/dist.py", line 974, in run_command
cmd_obj.run()
File "/usr/lib/python3/dist-packages/setuptools/command/test.py", line 135, in run
self.with_project_on_sys_path(self.run_tests)
File "/usr/lib/python3/dist-packages/setuptools/command/test.py", line 116, in with_project_on_sys_path
func()
File "/usr/lib/python3/dist-packages/setuptools/command/test.py", line 160, in run_tests
testLoader = cks
File "/usr/lib/python3.4/unittest/main.py", line 92, in __init__
self.parseArgs(argv)
File "/usr/lib/python3.4/unittest/main.py", line 139, in parseArgs
self.createTests()
File "/usr/lib/python3.4/unittest/main.py", line 146, in createTests
self.module)
File "/usr/lib/python3.4/unittest/loader.py", line 146, in loadTestsFromNames
suites = [self.loadTestsFromName(name, module) for name in names]
File "/usr/lib/python3.4/unittest/loader.py", line 146, in <listcomp>
suites = [self.loadTestsFromName(name, module) for name in names]
File "/usr/lib/python3.4/unittest/loader.py", line 117, in loadTestsFromName
return self.loadTestsFromModule(obj)
File "/usr/lib/python3/dist-packages/setuptools/command/test.py", line 26, in loadTestsFromModule
for file in resource_listdir(module.__name__, ''):
File "/usr/lib/python3/dist-packages/pkg_resources.py", line 954, in resource_listdir
resource_name
File "/usr/lib/python3/dist-packages/pkg_resources.py", line 1378, in resource_listdir
return self._listdir(self._fn(self.module_path,resource_name))
File "/usr/lib/python3/dist-packages/pkg_resources.py", line 1415, in _listdir
"Can't perform this operation for unregistered loader type"
NotImplementedError: Can't perform this operation for unregistered loader typeSolution
Le problème est que votre répertoire tests (et éventuellement ses sous-répertoires) n’est pas un module Python.
Pour corriger cela, ajoutez un fichier __init__.py au répertoire tests (et éventuellement à ses sous-répertoires). Pour résoudre le problème décrit ci-dessus, il n’a pas besoin de contenu
create_init.sh
touch tests/__init__.pyAprès cela, vous devriez pouvoir exécuter python setup.py test avec succès.
Consultez les articles similaires par catégorie :
Python
Si cet article vous a aidé, pensez à m'offrir un café ou à faire un don via PayPal pour soutenir la recherche et la publication de nouveaux articles sur TechOverflow