I'd like to embed console_scripts in a pex file and be able to use them by
specifying them when invoking the pex file.
The details are...
Python module with the following file structure:
.
├── mefoo
│ ├── __init__.py
│ ├── bar.py
│ └── command_line
│ ├── __init__.py
│ ├── cli1.py
│ └── cli2.py
└── setup.py
Stripped down `setup.py` is
#!/usr/bin/env python3
import setuptools
setuptools.setup(
name='mefoo',
version='0.0.1',
entry_points={
'console_scripts' : [
'mefoo1 = mefoo.command_line.cli1:main',
'mefoo2 = mefoo.command_line.cli2:main'
]
},
scripts=['scripts/mefooscript1'],
packages=setuptools.find_packages()
)
Build a wheel with `python3 setup.py sdist bdist_wheel` which outputs to `dist`
directory.
Install wheel with `pip install --no-index dist/mefoo-0.0.1-py3-none-any.whl`
This correctly creates my `console_script` entry point so from command prompt I
can call:
> mefoo1
Could not open mefoo1 in the environment [./themefoo.pex]: [Errno 2] No
such file or directory: 'mefoo1'
Then I move on and create a pex file:
pex --python=python3 --disable-cache --no-index --find-links=./dist mefoo
--output-file themefoo.pex -v
This creates a pex file, but attempts to use the `console_script` entry point
fails.
> ./themefoo.pex mefoo1
*How do I make this work ?*
What I can do is specify the `console_script` entry point as an entry point to
pex
<pre><code>
pex --python=python3 --disable-cache --no-index --find-links=./dist <b>-c
mefoo1</b> mefoo --output-file themefoo.pex -v
</code></pre>
Unzipping the pex file doesn't shows it doesn't contain any extra archived
content, so I'm guessing there's some extra config embedded in the file itself
which is interpreted appropriately.
The [wheel documentation](https://wheel.readthedocs.io/en/stable/) talks about
`install-scripts`, but I cannot work out how to use it.
The docs mention:
> If the scripts are needed, use a real installer like pip. The wheel
> tool python -m wheel install-scripts package [package …] can also be
> used at any time to call setuptools to write the appropriate scripts
> wrappers.
I'm not sure what writing the appropriate script wrappers means.
There's some discussion leading to `install-scripts` being implemented
[here](https://github.com/pypa/pip/issues/1067), and I had a look at the code
but couldn't work out whether this addresses my problem.
--
https://mail.python.org/mailman/listinfo/python-list