neosr-project/neosr

wrapper around train.py, ... scripts and release on pypi

Opened this issue · 1 comments

That would heavily simplify the management of updates for users and make the installation much simpler, just run pip install neosr and one would be ready to go.

As the config templates wouldn't be available locally anymore a neosr template ls and neosr template write command may also be of interest.

I have been thinking about this idea, and kinda decided not to proceed with this for now. I would like to hear opinions though. Reasons:

  • PyPI packages don't follow the .lock hashes. This means the env can't be reproduced, contrary to using poetry like it is right now.
  • The options/ would be awkward to work with (neosr template --otf span... would be weird)
  • No benefit (afaik) other than having a pretty name in the terminal. If the project had a public api having a package on pypi would really have benefits, but it doesn't

So instead of publishing on pypi, maybe a better solution would be to provide scripts for installing, updating and uninstalling.
For example, a single command (windows) irm "https://github.com/neosr-project/neosr/install" | iex or (linux) curl -s https://github.com/neosr-project/neosr/install | sh, would download and execute a powershell or shell, respectively. That script would check for CUDA version, python version and git. If they are not installed or have an unsupported version, attempt to use a package manager to install it, or fail with a message. Then after that the script executes successfully, a python script is executed, that will install poetry and use it to install neosr (as described on Installation Instructions). That way, the env is completely reproducible by obeying the lock file, and we don't need the complexity that comes with making it a package.

Opinions?