[docutils:bugs] #479 scripts install with broken shebang
Günter Milde via Docutils-develop <[email protected]>
| Newsgroups | gmane.text.docutils.devel |
|---|---|
| Message-ID | </p/docutils/bugs/479/0400b880fa831e24b3b996f73690b2a3aec20d57.bugs@docutils.p.sourceforge.net> |
- **Comment**:
Thank you for reporting a problem with Docutils.
The problem seems caused by the installer `pipx` rather than Docutils:
In the repository and source tarball, the [front end tools](https://docutils.sourceforge.io/docs/user/tools.html) start with the line
~~~
#!/usr/bin/env python3
~~~
In the "wheel", the line is shortened to
~~~
#!python
~~~
The upcoming [release 0.21](https://docutils.sourceforge.io/RELEASE-NOTES.html#release-0-21-unpublished) will provide `rst2*` "console_scripts" *entry points* instead of installing the `rst2*.py` front end tools.
This change will provide the `rst2*` cli commands ("apps") also under Windows and solve the *quick aside*.
The [Generic Command Line Front End](https://docutils.sourceforge.io/docs/user/tools.html#generic-command-line-front-end) `docutils` already uses the new standard.
You may try, e.g,
docutils --help
to see, if this works on your system. If yes, the "rst2*" commands should work with Docutils 0.21, too.
**Attention**
The current usage is
<toolname> [options] [<source> [<destination>]]
In a directory with files `a.rst` and `b.rst`, the command
rst2html.py docs/*
will happily **overwrite** `b.rst` with the output of converting `a.rst` **without warning**.
This is a [known problem](https://sourceforge.net/p/docutils/feature-requests/36/) and [will change in future releases](https://docutils.sourceforge.io/RELEASE-NOTES.html#command-line-interface).
---
**[bugs:#479] scripts install with broken shebang**
**Status:** open
**Created:** Mon Feb 19, 2024 07:25 AM UTC by Jason R. Coombs
**Last Updated:** Mon Feb 19, 2024 07:25 AM UTC
**Owner:** nobody
The way docutils presents its executable scripts is broken on macOS.
Today, I installed docutils using pipx.
```
@ pipx install docutils
installed package docutils 0.20.1, installed using Python 3.12.2
These apps are now globally available
- docutils
- rst2html.py
- rst2html4.py
- rst2html5.py
- rst2latex.py
- rst2man.py
- rst2odt.py
- rst2odt_prepstyles.py
- rst2pseudoxml.py
- rst2s5.py
- rst2xetex.py
- rst2xml.py
- rstpep2html.py
done! ✨ 🌟 ✨
```
Quick aside, it would be nice if these executables didn't have the .py extension.
After installing, the scripts failed with this error:
```
@ rst2html.py docs/*
xonsh: subprocess mode: command not found: '/Users/jaraco/Library/Application'
```
The problem is that pipx, by default, installs its data into the "Application Support" directory:
```
@ pipx environment | grep HOME
PIPX_HOME=
PIPX_HOME=/Users/jaraco/Library/Application Support/pipx
```
And when it does, the scripts get installed with an invalid shebang because [Unix doesn't support spaces in shebangs](https://blog.jaraco.com/unix-doesnt-support-spaces-in-filenames/):
```
@ head -n 1 $(which rst2html.py)
#!/Users/jaraco/Library/Application Support/pipx/venvs/docutils/bin/python
```
---
Sent from sourceforge.net because [email protected] is subscribed to https://sourceforge.net/p/docutils/bugs/
To unsubscribe from further messages, a project admin can change settings at https://sourceforge.net/p/docutils/admin/bugs/options. Or, if this is a mailing list, you can unsubscribe from the mailing list.