From: Jason R. C. <ja...@us...> - 2024-03-25 13:57:32
|
Yes, using the `docutils` app does work, so `rst.*` should also work once converted to console entry points. Thanks! I agree the "macOS workaround" could work around the issue, but it's not a very robust workaround, as it requires repairing every shebang on every installation, and moreover, the bug doesn't exist just in macOS or just with pipx. Here's the same bug manifest in Ubuntu using just pip: ``` docker run -it jaraco/multipy-tox bash root@6b1625414874:/# mkdir /foo\ bar root@6b1625414874:/# py -m venv /foo\ bar/env root@6b1625414874:/# /foo\ bar/env/bin/pip install -q docutils [notice] A new release of pip is available: 23.2.1 -> 24.0 [notice] To update, run: python3.12 -m pip install --upgrade pip root@6b1625414874:/# /foo\ bar/env/bin/rst2html.py bash: /foo bar/env/bin/rst2html.py: /foo: bad interpreter: No such file or directory ``` The root problem is that Unix doesn't support paths with spaces in a shebang. --- **[bugs:#479] scripts install with broken shebang** **Status:** closed-invalid **Created:** Mon Feb 19, 2024 07:25 AM UTC by Jason R. Coombs **Last Updated:** Mon Mar 11, 2024 07:25 PM 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 doc...@li... 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. |