mirror of
				https://github.com/explosion/spaCy.git
				synced 2025-10-30 23:47:31 +03:00 
			
		
		
		
	Fix autolinking failure on fresh model install (resolves #1138)
On fresh install via subprocess, pip.get_installed_distributions() won't show new model, so is_package check in link command fails. Solution for now is to get model package path explicitly and pass it to link command.
This commit is contained in:
		
							parent
							
								
									88bf1cf87c
								
							
						
					
					
						commit
						28e2fec23b
					
				|  | @ -8,7 +8,7 @@ import subprocess | |||
| import sys | ||||
| 
 | ||||
| from .link import link | ||||
| from ..util import prints | ||||
| from ..util import prints, get_package_path | ||||
| from .. import about | ||||
| 
 | ||||
| 
 | ||||
|  | @ -32,7 +32,11 @@ def download(cmd, model, direct=False): | |||
|         version = get_version(model_name, compatibility) | ||||
|         download_model('{m}-{v}/{m}-{v}.tar.gz'.format(m=model_name, v=version)) | ||||
|         try: | ||||
|             link(None, model_name, model, force=True) | ||||
|             # Get package path here because link uses | ||||
|             # pip.get_installed_distributions() to check if model is a package, | ||||
|             # which fails if model was just installed via subprocess | ||||
|             package_path = get_package_path(model_name) | ||||
|             link(None, model_name, model, force=True, model_path=package_path) | ||||
|         except: | ||||
|             # Dirty, but since spacy.download and the auto-linking is mostly | ||||
|             # a convenience wrapper, it's best to show a success message and | ||||
|  |  | |||
|  | @ -14,7 +14,7 @@ from .. import util | |||
|     link_name=("name of shortuct link to create", "positional", None, str), | ||||
|     force=("force overwriting of existing link", "flag", "f", bool) | ||||
| ) | ||||
| def link(cmd, origin, link_name, force=False): | ||||
| def link(cmd, origin, link_name, force=False, model_path=None): | ||||
|     """ | ||||
|     Create a symlink for models within the spacy/data directory. Accepts | ||||
|     either the name of a pip package, or the local path to the model data | ||||
|  | @ -23,7 +23,7 @@ def link(cmd, origin, link_name, force=False): | |||
|     if util.is_package(origin): | ||||
|         model_path = util.get_package_path(origin) | ||||
|     else: | ||||
|         model_path = Path(origin) | ||||
|         model_path = Path(origin) if model_path is None else Path(model_path) | ||||
|     if not model_path.exists(): | ||||
|         prints("The data should be located in %s" % path2str(model_path), | ||||
|                title="Can't locate model data", exits=1) | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue
	
	Block a user