-
Notifications
You must be signed in to change notification settings - Fork 337
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Installer updates #662
Installer updates #662
Changes from 8 commits
b7bd358
a3d53ea
435b4be
81517a9
8bb396d
16532fe
b8b08b5
3172b08
b866c29
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,3 +1,85 @@ | ||
# Installation | ||
|
||
See https://github.com/nerdvegas/rez/wiki/Getting-Started#installation | ||
|
||
|
||
First, install Rez. Download the source, and, from the source directory, run: | ||
|
||
``` | ||
]$ python ./install.py | ||
``` | ||
|
||
This installs rez to `/opt/rez`. See `install.py -h` for how to install to a | ||
different location. | ||
|
||
Once the installation is complete, a message tells you how to run it: | ||
|
||
``` | ||
SUCCESS! To activate Rez, add the following path to $PATH: | ||
/opt/rez/bin/rez | ||
|
||
You may also want to source the completion script (for bash): | ||
source /opt/rez/completion/complete.sh | ||
``` | ||
|
||
Do _not_ move the installation - re-install to a new location if you want to | ||
change the install path. If you want to install rez for multiple operating | ||
systems, perform separate installs for each of those systems. | ||
|
||
|
||
# Installation Via Pip | ||
|
||
It is possible to install rez with pip, like so: | ||
|
||
``` | ||
]$ pip install rez | ||
``` | ||
|
||
However, this comes with a caveat - rez command line tools _are not guaranteed | ||
to work correctly_ once inside a rez environment (ie after using the `rez-env` | ||
command). The reasons are given in the next section. | ||
|
||
Pip installation is adequate however, if all you require is the rez API, or you | ||
don't require its command line tools to be available within a resolved environment. | ||
|
||
|
||
# Why Not Pip For Production? | ||
|
||
Rez is not a normal python package. Although it can successfully be installed | ||
using standard mechanisms such as pip, this comes with a number of caveats. | ||
Specifically: | ||
|
||
* When within a rez environment (ie after using the `rez-env` command), the rez | ||
command line tools are not guaranteed to function correctly; | ||
* When within a rez environment, other packages' tools (that were also installed | ||
with pip) remain visible, but are not guaranteed to work. | ||
|
||
When you enter a rez environment, the rez packages in the resolve configure | ||
that environment as they see fit. For example, it is not uncommon for a python | ||
package to append to PYTHONPATH. Environment variables such as PYTHONPATH | ||
affect the behaviour of tools, including rez itself, and this can cause it to | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. This would possibly be addressed by the above as well. |
||
crash or behave abnormally. | ||
|
||
When you use the `install.py` script to install rez, some extra steps are taken | ||
to avoid this problem. Specifically: | ||
|
||
* Rez is installed into a virtualenv so that it operates standalone; | ||
* The rez tools are shebanged with `python -E`, in order to protect them from | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. If the |
||
environment variables that affect python's behaviour; | ||
* The rez tools are stored in their own directory, so that other unrelated tools | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. And finally, due to explicit control over the environment, this would also go away. Pof! |
||
are not visible. | ||
|
||
Due to the way standard wheel-based python installations work, it simply is not | ||
possible to perform these extra steps without using a custom installation script. | ||
Wheels do not give the opportunity to run post-installation code; neither do | ||
they provide functionality for specifying interpreter arguments to be added for | ||
any given entry point. | ||
|
||
It is possible to get around these issues to some extent, but doing so would | ||
introduce a second code path parallel to the `install.py` -based installation, | ||
and more caveats are introduced. For example, rez tools could detect when they're | ||
run from a non-production installation, and could remove those parts of `sys.path` | ||
that have come from PYTHONPATH. However, this doesn't take into account other | ||
environment variables (such as PYTHONHOME). Neither does it solve the problem of | ||
other unrelated tools remaining visible within the rez environment (and thus | ||
potentially crashing or behaving abnormally). |
This file was deleted.
This file was deleted.
This file was deleted.
This file was deleted.
This file was deleted.
This file was deleted.
This file was deleted.
This file was deleted.
This file was deleted.
This file was deleted.
This file was deleted.
This file was deleted.
This file was deleted.
This file was deleted.
This file was deleted.
This file was deleted.
This file was deleted.
This file was deleted.
This file was deleted.
This file was deleted.
This file was deleted.
This file was deleted.
This file was deleted.
This file was deleted.
This file was deleted.
This file was deleted.
This file was deleted.
This file was deleted.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Philosophical question (sorry in advance): Should we move this doc in the https://github.com/nerdvegas/rez/wiki/Getting-Started#installation doc? I'm also wondering if we should add a mention about how to install in the README as it's usually a common practice to do so.
Or we want to tackle that into a separate subject and wait for your roadmap before deciding?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Yes to both, will make those changes.