From 406d2b9f9cd801a6aaba80983d395d7652fda368 Mon Sep 17 00:00:00 2001 From: j Date: Fri, 8 Dec 2017 22:43:08 +0100 Subject: [PATCH] activate venv --- manage.py | 39 ++++++++++++++++++++++++--------------- 1 file changed, 24 insertions(+), 15 deletions(-) diff --git a/manage.py b/manage.py index 2883365..ded56ea 100755 --- a/manage.py +++ b/manage.py @@ -2,21 +2,30 @@ import os import sys +def activate_venv(base): + if os.path.exists(base): + old_os_path = os.environ.get('PATH', '') + os.environ['PATH'] = os.path.join(base, 'bin') + os.pathsep + old_os_path + site_packages = os.path.join(base, 'lib', 'python%s' % sys.version[:3], 'site-packages') + prev_sys_path = list(sys.path) + import site + site.addsitedir(site_packages) + sys.real_prefix = sys.prefix + sys.prefix = base + # Move the added items to the front of the path: + new_sys_path = [] + for item in list(sys.path): + if item not in prev_sys_path: + new_sys_path.append(item) + sys.path.remove(item) + sys.path[:0] = new_sys_path + + if __name__ == "__main__": + root_dir = os.path.normpath(os.path.abspath(os.path.dirname(__file__))) + activate_venv(os.path.normpath(os.path.join(root_dir, 'venv'))) + os.environ.setdefault("DJANGO_SETTINGS_MODULE", "camp.settings") - try: - from django.core.management import execute_from_command_line - except ImportError: - # The above import may fail for some other reason. Ensure that the - # issue is really that Django is missing to avoid masking other - # exceptions on Python 2. - try: - import django - except ImportError: - raise ImportError( - "Couldn't import Django. Are you sure it's installed and " - "available on your PYTHONPATH environment variable? Did you " - "forget to activate a virtual environment?" - ) - raise + from django.core.management import execute_from_command_line + execute_from_command_line(sys.argv)