virtualenv/web/create_python_env.py
author ymh <ymh.work@gmail.com>
Sat, 05 Apr 2014 03:49:56 +0200
changeset 165 64aae3fee9d5
parent 3 63c5437a9b7d
permissions -rw-r--r--
Upgrade virtualenv
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
0
81e7900b06a7 First import
ymh <ymh.work@gmail.com>
parents:
diff changeset
     1
"""
81e7900b06a7 First import
ymh <ymh.work@gmail.com>
parents:
diff changeset
     2
Call this like ``python create_python_env.py``; it will
81e7900b06a7 First import
ymh <ymh.work@gmail.com>
parents:
diff changeset
     3
refresh the project-boot.py script
81e7900b06a7 First import
ymh <ymh.work@gmail.com>
parents:
diff changeset
     4
81e7900b06a7 First import
ymh <ymh.work@gmail.com>
parents:
diff changeset
     5
-prerequisite:
81e7900b06a7 First import
ymh <ymh.work@gmail.com>
parents:
diff changeset
     6
81e7900b06a7 First import
ymh <ymh.work@gmail.com>
parents:
diff changeset
     7
- virtualenv
81e7900b06a7 First import
ymh <ymh.work@gmail.com>
parents:
diff changeset
     8
165
64aae3fee9d5 Upgrade virtualenv
ymh <ymh.work@gmail.com>
parents: 3
diff changeset
     9
- python project-boot.py --unzip-setuptools --no-site-packages --clear --type-install=local <path_to_venv>
0
81e7900b06a7 First import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    10
81e7900b06a7 First import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    11
"""
81e7900b06a7 First import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    12
81e7900b06a7 First import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    13
import os
81e7900b06a7 First import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    14
import subprocess
81e7900b06a7 First import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    15
import re
81e7900b06a7 First import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    16
import sys
81e7900b06a7 First import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    17
81e7900b06a7 First import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    18
81e7900b06a7 First import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    19
here = os.path.dirname(os.path.abspath(__file__))
81e7900b06a7 First import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    20
base_dir = here
81e7900b06a7 First import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    21
script_name = os.path.join(base_dir, 'project-boot.py')
81e7900b06a7 First import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    22
81e7900b06a7 First import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    23
import virtualenv
81e7900b06a7 First import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    24
81e7900b06a7 First import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    25
src_base = os.path.abspath(os.path.join(here,"..","res","src")).replace("\\","/")
81e7900b06a7 First import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    26
lib_path = os.path.abspath(os.path.join(here,"..","res","lib")).replace("\\","/")
81e7900b06a7 First import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    27
patch_path = os.path.abspath(os.path.join(here,"res","patch")).replace("\\","/")
81e7900b06a7 First import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    28
81e7900b06a7 First import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    29
81e7900b06a7 First import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    30
EXTRA_TEXT  = "import sys\n"
81e7900b06a7 First import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    31
EXTRA_TEXT += "sys.path.append('%s')\n" % (lib_path)
81e7900b06a7 First import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    32
EXTRA_TEXT += "sys.path.append('%s')\n" % (os.path.abspath(os.path.join(here,"res")).replace("\\","/"))
81e7900b06a7 First import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    33
EXTRA_TEXT += "from res_create_env import generate_install_methods\n"
3
63c5437a9b7d allow usage of requirement files for virtualenv
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
    34
EXTRA_TEXT += "adjust_options, extend_parser, after_install = generate_install_methods(path_locations, '%s', '%s', Logger, call_subprocess)\n" % (src_base, here)
0
81e7900b06a7 First import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    35
81e7900b06a7 First import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    36
def main():
81e7900b06a7 First import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    37
    python_version = ".".join(map(str,sys.version_info[0:2]))
81e7900b06a7 First import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    38
    text = virtualenv.create_bootstrap_script(EXTRA_TEXT, python_version=python_version)
81e7900b06a7 First import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    39
    if os.path.exists(script_name):
81e7900b06a7 First import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    40
        f = open(script_name)
81e7900b06a7 First import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    41
        cur_text = f.read()
81e7900b06a7 First import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    42
        f.close()
81e7900b06a7 First import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    43
    else:
81e7900b06a7 First import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    44
        cur_text = ''
81e7900b06a7 First import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    45
    print 'Updating %s' % script_name
81e7900b06a7 First import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    46
    if cur_text == 'text':
81e7900b06a7 First import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    47
        print 'No update'
81e7900b06a7 First import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    48
    else:
81e7900b06a7 First import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    49
        print 'Script changed; updating...'
81e7900b06a7 First import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    50
        f = open(script_name, 'w')
81e7900b06a7 First import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    51
        f.write(text)
81e7900b06a7 First import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    52
        f.close()
81e7900b06a7 First import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    53
81e7900b06a7 First import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    54
if __name__ == '__main__':
81e7900b06a7 First import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    55
    main()
81e7900b06a7 First import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    56