Make wheel the default format and update docs [ci skip]

This commit is contained in:
Ines Montani 2021-02-01 23:18:43 +11:00
parent b9573e9e22
commit a59f3fcf5d
6 changed files with 17 additions and 29 deletions

View File

@ -188,8 +188,9 @@ command, or manually by pointing pip to a path or URL.
# Download best-matching version of specific model for your spaCy installation # Download best-matching version of specific model for your spaCy installation
python -m spacy download en_core_web_sm python -m spacy download en_core_web_sm
# pip install .tar.gz archive from path or URL # pip install .tar.gz archive or .whl from path or URL
pip install /Users/you/en_core_web_sm-3.0.0.tar.gz pip install /Users/you/en_core_web_sm-3.0.0.tar.gz
pip install /Users/you/en_core_web_sm-3.0.0-py3-none-any.whl
pip install https://github.com/explosion/spacy-models/releases/download/en_core_web_sm-3.0.0/en_core_web_sm-3.0.0.tar.gz pip install https://github.com/explosion/spacy-models/releases/download/en_core_web_sm-3.0.0/en_core_web_sm-3.0.0.tar.gz
``` ```

View File

@ -19,7 +19,7 @@ def download_cli(
ctx: typer.Context, ctx: typer.Context,
model: str = Arg(..., help="Name of pipeline package to download"), model: str = Arg(..., help="Name of pipeline package to download"),
direct: bool = Opt(False, "--direct", "-d", "-D", help="Force direct download of name + version"), direct: bool = Opt(False, "--direct", "-d", "-D", help="Force direct download of name + version"),
wheel: bool = Opt(False, "--wheel", "-W", help="Download binary wheel") sdist: bool = Opt(False, "--sdist", "-S", help="Download sdist (.tar.gz) archive instead of pre-built binary wheel")
# fmt: on # fmt: on
): ):
""" """
@ -32,10 +32,10 @@ def download_cli(
DOCS: https://spacy.io/api/cli#download DOCS: https://spacy.io/api/cli#download
AVAILABLE PACKAGES: https://spacy.io/models AVAILABLE PACKAGES: https://spacy.io/models
""" """
download(model, direct, wheel, *ctx.args) download(model, direct, sdist, *ctx.args)
def download(model: str, direct: bool = False, wheel: bool = False, *pip_args) -> None: def download(model: str, direct: bool = False, sdist: bool = False, *pip_args) -> None:
if ( if (
not (is_package("spacy") or is_package("spacy-nightly")) not (is_package("spacy") or is_package("spacy-nightly"))
and "--no-deps" not in pip_args and "--no-deps" not in pip_args
@ -49,7 +49,7 @@ def download(model: str, direct: bool = False, wheel: bool = False, *pip_args) -
"dependencies, you'll have to install them manually." "dependencies, you'll have to install them manually."
) )
pip_args = pip_args + ("--no-deps",) pip_args = pip_args + ("--no-deps",)
suffix = WHEEL_SUFFIX if wheel else SDIST_SUFFIX suffix = SDIST_SUFFIX if sdist else WHEEL_SUFFIX
dl_tpl = "{m}-{v}/{m}-{v}{s}#egg={m}=={v}" dl_tpl = "{m}-{v}/{m}-{v}{s}#egg={m}=={v}"
if direct: if direct:
components = model.split("-") components = model.split("-")

View File

@ -29,8 +29,6 @@ Download [trained pipelines](/usage/models) for spaCy. The downloader finds the
best-matching compatible version and uses `pip install` to download the Python best-matching compatible version and uses `pip install` to download the Python
package. Direct downloads don't perform any compatibility checks and require the package. Direct downloads don't perform any compatibility checks and require the
pipeline name to be specified with its version (e.g. `en_core_web_sm-3.0.0`). pipeline name to be specified with its version (e.g. `en_core_web_sm-3.0.0`).
Setting the `--wheel` flag will download a binary wheel file instead of an
archive, which can be faster and more memory efficient.
> #### Downloading best practices > #### Downloading best practices
> >
@ -44,14 +42,14 @@ archive, which can be faster and more memory efficient.
> project. > project.
```cli ```cli
$ python -m spacy download [model] [--wheel] [--direct] [pip_args] $ python -m spacy download [model] [--direct] [--sdist] [pip_args]
``` ```
| Name | Description | | Name | Description |
| ------------------------------------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | ------------------------------------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `model` | Pipeline package name, e.g. [`en_core_web_sm`](/models/en#en_core_web_sm). ~~str (positional)~~ | | `model` | Pipeline package name, e.g. [`en_core_web_sm`](/models/en#en_core_web_sm). ~~str (positional)~~ |
| `--wheel`, `-W` <Tag variant="new">3</Tag> | Download binary wheel package instead of `.tar.gz` archive. Can make download and installation faster and more memory efficient. ~~bool (flag)~~ |
| `--direct`, `-D` | Force direct download of exact package version. ~~bool (flag)~~ | | `--direct`, `-D` | Force direct download of exact package version. ~~bool (flag)~~ |
| `--sdist`, `-S` <Tag variant="new">3</Tag> | Download the source package (`.tar.gz` archive) instead of the default pre-built binary wheel. ~~bool (flag)~~ |
| `--help`, `-h` | Show help message and available arguments. ~~bool (flag)~~ | | `--help`, `-h` | Show help message and available arguments. ~~bool (flag)~~ |
| pip args <Tag variant="new">2.1</Tag> | Additional installation options to be passed to `pip install` when installing the pipeline package. For example, `--user` to install to the user home directory or `--no-deps` to not install package dependencies. ~~Any (option/flag)~~ | | pip args <Tag variant="new">2.1</Tag> | Additional installation options to be passed to `pip install` when installing the pipeline package. For example, `--user` to install to the user home directory or `--no-deps` to not install package dependencies. ~~Any (option/flag)~~ |
| **CREATES** | The installed pipeline package in your `site-packages` directory. | | **CREATES** | The installed pipeline package in your `site-packages` directory. |

View File

@ -283,9 +283,6 @@ $ python -m spacy download en_core_web_sm
# Download exact package version # Download exact package version
$ python -m spacy download en_core_web_sm-3.0.0 --direct $ python -m spacy download en_core_web_sm-3.0.0 --direct
# Download binary wheel (can be more efficient)
$ python -m spacy download en_core_web_sm --wheel
``` ```
The download command will [install the package](/usage/models#download-pip) via The download command will [install the package](/usage/models#download-pip) via
@ -306,15 +303,18 @@ doc = nlp("This is a sentence.")
To download a trained pipeline directly using To download a trained pipeline directly using
[pip](https://pypi.python.org/pypi/pip), point `pip install` to the URL or local [pip](https://pypi.python.org/pypi/pip), point `pip install` to the URL or local
path of the archive file. To find the direct link to a package, head over to the path of the wheel file or archive. Installing the wheel is usually more
efficient. To find the direct link to a package, head over to the
[releases](https://github.com/explosion/spacy-models/releases), right click on [releases](https://github.com/explosion/spacy-models/releases), right click on
the archive link and copy it to your clipboard. the archive link and copy it to your clipboard.
```bash ```bash
# With external URL # With external URL
$ pip install https://github.com/explosion/spacy-models/releases/download/en_core_web_sm-3.0.0/en_core_web_sm-3.0.0-py3-none-any.whl
$ pip install https://github.com/explosion/spacy-models/releases/download/en_core_web_sm-3.0.0/en_core_web_sm-3.0.0.tar.gz $ pip install https://github.com/explosion/spacy-models/releases/download/en_core_web_sm-3.0.0/en_core_web_sm-3.0.0.tar.gz
# With local file # With local file
$ pip install /Users/you/en_core_web_sm-3.0.0-py3-none-any.whl
$ pip install /Users/you/en_core_web_sm-3.0.0.tar.gz $ pip install /Users/you/en_core_web_sm-3.0.0.tar.gz
``` ```

View File

@ -658,8 +658,9 @@ $ python -m spacy package ./en_example_pipeline ./packages
``` ```
This command will create a pipeline package directory and will run This command will create a pipeline package directory and will run
`python setup.py sdist` in that directory to create `.tar.gz` archive of your `python setup.py sdist` in that directory to create a binary `.whl` file or
package that can be installed using `pip install`. `.tar.gz` archive of your package that can be installed using `pip install`.
Installing the binary wheel is usually more efficient.
```yaml ```yaml
### Directory structure ### Directory structure

View File

@ -51,25 +51,16 @@ const data = [
id: 'config', id: 'config',
title: 'Options', title: 'Options',
multiple: true, multiple: true,
options: [ options: [{ id: 'example', title: 'Show text example' }],
{
id: 'wheel',
title: 'Download binary wheel',
help: 'Can make download and installation more efficient',
},
{ id: 'example', title: 'Show text example' },
],
}, },
] ]
const QuickstartInstall = ({ id, title, description, children }) => { const QuickstartInstall = ({ id, title, description, children }) => {
const [lang, setLang] = useState(DEFAULT_LANG) const [lang, setLang] = useState(DEFAULT_LANG)
const [wheel, setWheel] = useState(false)
const [efficiency, setEfficiency] = useState(DEFAULT_OPT === 'efficiency') const [efficiency, setEfficiency] = useState(DEFAULT_OPT === 'efficiency')
const setters = { const setters = {
lang: setLang, lang: setLang,
optimize: v => setEfficiency(v.includes('efficiency')), optimize: v => setEfficiency(v.includes('efficiency')),
config: v => setWheel(v.includes('wheel')),
} }
return ( return (
<StaticQuery <StaticQuery
@ -96,10 +87,7 @@ const QuickstartInstall = ({ id, title, description, children }) => {
const exampleText = example || 'No text available yet' const exampleText = example || 'No text available yet'
return lang !== code ? null : ( return lang !== code ? null : (
<Fragment key={code}> <Fragment key={code}>
<QS> <QS>python -m spacy download {pkg}</QS>
python -m spacy download {pkg}
{wheel ? ' --wheel' : ''}
</QS>
<QS divider /> <QS divider />
<QS load="spacy" prompt="python"> <QS load="spacy" prompt="python">
import spacy import spacy