Interestingly enough, I was just talking with someone today who asked whether it was desirable for linters or something to help making single-file scripts more isolated. I don’t think the PEPs should prescribe this, but tools could choose to support such a helper feature if they wanted to (e.g. symlink/copy the script to somewhere so that sys.path
doesn’t pick up the local directory). But I think that’s a tools question as to whether they want to make the single-script portability an important use case.
Agreed. I’m personally ignoring it as I find it tangential to either PEP’s contents as it doesn’t change what conceptually the PEPs are each proposing (and I’m aware of the differences in scope between them).
It’s all a balancing act. The key point is you have to accept you may get it wrong. You can let tools experiment endlessly, but unless you’re willing to stop and choose something and be willing to get over your fear that it might not be perfect, you will end up with no standards in which case you end up with no interoperability and everyone doing everything differently because it’s all defined by the tools (and I do not want to go back to a convention-based world).
That’s actually a really interesting idea and would I think assuage many of the concerns expressed about that. The differences would be minimal I think:
- That table is for reading by any tool that needs metadata about the project and its runtime requirements where project is defined as Python code that is executable or importable
- The name and version fields would be optional and only required when build backends in particular are the consumer since they must write core metadata
Something like that would be great and I would love if I could get people’s thoughts about this!
Another possibility is to define a new [run]
table ala Projects that aren't meant to generate a wheel and `pyproject.toml` and that’s the only thing allowed in a script (i.e., really lean into the idea of this is replacing requirements.txt
for the simple case and then scale up). And to be clear, I’m not trying to guide you or anyone else towards this, but this is an option that is sitting in the back of my head if [project]
becomes the stumbling block while embedding TOML is not.