##// END OF EJS Templates
Apply os.path.normcase to venv detection
Eric Galloway -
Show More
@@ -732,26 +732,16 b' class InteractiveShell(SingletonConfigurable):'
732 732 # Not in a virtualenv
733 733 return
734 734
735 # Handle no symbolic link case first.
736 if not os.path.islink(sys.executable):
737 # Adapted from pip.locations.running_under_virtualenv
738 if hasattr(sys, 'real_prefix'):
739 # Running properly in a virtualenv
740 return
741 elif sys.prefix != getattr(sys, "base_prefix", sys.prefix):
742 # Running properly in a venv
743 return
744
745 735 # venv detection:
746 736 # stdlib venv may symlink sys.executable, so we can't use realpath.
747 737 # but others can symlink *to* the venv Python, so we can't just use sys.executable.
748 738 # So we just check every item in the symlink tree (generally <= 3)
749 p = sys.executable
739 p = os.path.normcase(sys.executable)
750 740 paths = [p]
751 741 while os.path.islink(p):
752 p = os.path.join(os.path.dirname(p), os.readlink(p))
742 p = os.path.normcase(os.path.join(os.path.dirname(p), os.readlink(p)))
753 743 paths.append(p)
754 if any(p.startswith(os.environ['VIRTUAL_ENV']) for p in paths):
744 if any(p.startswith(os.path.normcase(os.environ['VIRTUAL_ENV'])) for p in paths):
755 745 # Running properly in the virtualenv, don't need to do anything
756 746 return
757 747
General Comments 0
You need to be logged in to leave comments. Login now