-
-
Save tevino/1a557a0c200d61d4e4fb to your computer and use it in GitHub Desktop.
#!/usr/bin/env bash | |
ENV_PATH="$(dirname "$(dirname "$(which pip)")")" | |
SYSTEM_VIRTUALENV="$(which -a virtualenv|tail -1)" | |
BAD_ENV_PATHS="/usr/local" | |
echo "Ensure the root of the broken virtualenv:" | |
echo " $ENV_PATH" | |
if [[ -z "$ENV_PATH" ]] || [[ "$ENV_PATH" = *"$BAD_ENV_PATHS"* ]]; then | |
echo "The root path above doesn't seems to be a valid one." | |
echo "Please make sure you ACTIVATED the broken virtualenv." | |
echo "‼️ Exiting for your safety... (thanks @laymonk for reporting this)" | |
exit 1 | |
fi | |
read -p "‼️ Press Enter if you are not sure (y/N) " -n 1 -r | |
echo | |
if [[ $REPLY =~ ^[Yy]$ ]]; then | |
echo "♻️ Removing old symbolic links......" | |
find "$ENV_PATH" -type l -delete -print | |
echo "💫 Creating new symbolic links......" | |
$SYSTEM_VIRTUALENV "$ENV_PATH" | |
echo "🎉 Done!" | |
fi |
I‘ve gone directly into the pit! This is about a resolution about "delete all links in /usr/local". For reference only,url is here,http://www.cnblogs.com/itcomputer/p/8984828.html.
thank you soo much @tevino due to a brew install mistake. I spent all day fixing my python, virtualenv and this was the last piece. I was not looking forward to trying to fix all those symlinks for all my projects.
Thanks, man. Perfect solution!
man you just saved me from spending 2 more hours thank you very much
This script is awesome. Thank you for posting it. Way better than my hunt and peck method.
The script switched the venv from Python 3 to Python 2.7 on my machine, so I had to delete and rebuild the virtualenv. Might be good to use only python3.
Works like a charm! Thank you!
Works perfectly! Thanks!
yep this is magical, thank you
Thank you!
Thanks!
Thank you!
Worked very well, thanks!
Thanks!
Worked like a charm! Had to deal with this issue multiple times now and this is the first working solution without creating a complete new env from scratch.
Thank you very much indeed!
I found a better solution. Just recreate the virtualenv the same way you would normally create virtualenv. But use the folder path instead of the name you want for the virtualenv.
Example:
virtualenv -p python3.5 /path/to/your/existing/venv/
I had changed my system's Python version to 3.7.7 but the venv was python 3.5.2. It stopped working but this fixed it!
Than you @olitomas. That was great
Hi @laymonk, I know it's been years but I just saw this, the extra logic is added to prevent damaging
/usr/local
, your credit was added(I'll remove it if you are not OK with it), I'm sorry for your loss.