IDAES / idaes-pse

The IDAES Process Systems Engineering Framework
https://idaes-pse.readthedocs.io/
Other
210 stars 227 forks source link

Update advanced user install instructions for specific Pyomo version #184

Open adowling2 opened 3 years ago

adowling2 commented 3 years ago

In the current instructions (https://idaes-pse.readthedocs.io/en/stable/advanced_user_guide/advanced_install/index.html), an advanced user installs the idaes dependencies including pyomo using pip install . (or a similar command).

What if you want to test out an alternative branch of Pyomo (e.g., main branch)?

Follow the same instructions as linked above. If you already ran pip install, we need to remove pyomo and pyutlib:

pip uninstall pyomo pyutilib

Be sure to run this is the conda environment you created as part of the advanced installation instructions! Then in the conda environment, run:

git clone https://github.com/Pyutilib/pyutilib
cd pyutilib
pip install -e .
git clone https://github.com/Pyomo/pyomo
cd pyomo
pip install -e .

Tip: Do NOT put these pyutlib and pyomo folders inside your idaes-pse folder. All three of these folders are git repositories. It is a really bad idea to checkout a git repository inside a git repository; unexpected things can happen.

Note: pyutlib is no longer needed with Pyomo 6.0 (to be released in a few months).

Inside the pyomo folder, you can use git to switch between different branches and remotes.

adowling2 commented 3 years ago

@jsiirola @lbianchi-lbl @eslickj Please edit my post above with suggestions or other tips.

ksbeattie commented 3 years ago

I think a better way to use a different version of Pyomo, PyUtiLib (or any other idaes-pse requirement) would be to edit the requirements-dev.txt, requirements.txt (or even the setup.py) to grab the package/version they desire and then install idaes-pse from clone of idaes-pse as already instructed (i.e. pip install -r requirement-dev.txt).

That is better, IMO, than cloning the repo of an alternate requirement, assuming such an advanced user is only using and not developing that alternate requirement. If they are making changes to it, say in the case of Pyomo, then they are a Pyomo developer and should follow Pyomo's developer's instructions.

We could still improve these advanced developer docs, I'd just like to keep it clear that "users install" and "developers clone".