|
20 | 20 | import gpt_code_ui.kernel_program.utils as utils
|
21 | 21 | import gpt_code_ui.kernel_program.config as config
|
22 | 22 |
|
| 23 | +USE_SEPARATE_VENV = False |
| 24 | + |
23 | 25 | # Set up globals
|
24 | 26 | messaging = None
|
25 | 27 | logger = config.get_logger()
|
@@ -171,38 +173,42 @@ def flush_kernel_msgs(kc, tries=1, timeout=0.2):
|
171 | 173 | def start_kernel(id: str):
|
172 | 174 | cwd = pathlib.Path(os.getcwd())
|
173 | 175 | kernel_dir = cwd / f'kernel.{id}'
|
174 |
| - kernel_venv = kernel_dir / 'venv' |
175 |
| - kernel_venv_bindir = kernel_venv / 'bin' |
176 |
| - kernel_python_executable = kernel_venv_bindir / os.path.basename(sys.executable) |
177 |
| - kernel_connection_file = kernel_dir / "kernel_connection_file.json" |
178 |
| - launch_kernel_script_path = pathlib.Path(__file__).parent.resolve() / "launch_kernel.py" |
179 |
| - kernel_env = os.environ.copy() |
180 |
| - kernel_env['PATH'] = str(kernel_venv_bindir) + os.pathsep + kernel_env['PATH'] |
181 | 176 |
|
182 | 177 | # Cleanup potential leftovers
|
183 | 178 | shutil.rmtree(kernel_dir, ignore_errors=True)
|
184 |
| - |
185 | 179 | os.makedirs(kernel_dir)
|
186 | 180 |
|
187 |
| - # create virtual env inside kernel_venv directory |
188 |
| - subprocess.run([sys.executable, '-m', 'venv', kernel_venv, '--upgrade-deps', '--system-site-packages']) |
189 |
| - # install wheel because some packages do not like being installed without |
190 |
| - subprocess.run([kernel_python_executable, '-m', 'pip', 'install', 'wheel>=0.41,<1.0']) |
191 |
| - # install all default packages into the venv |
192 |
| - default_packages = [ |
193 |
| - "ipykernel>=6,<7", |
194 |
| - "numpy>=1.24,<1.25", |
195 |
| - "dateparser>=1.1,<1.2", |
196 |
| - "pandas>=1.5,<1.6", |
197 |
| - "geopandas>=0.13,<0.14", |
198 |
| - "tabulate>=0.9.0<1.0", |
199 |
| - "PyPDF2>=3.0,<3.1", |
200 |
| - "pdfminer>=20191125,<20191200", |
201 |
| - "pdfplumber>=0.9,<0.10", |
202 |
| - "matplotlib>=3.7,<3.8", |
203 |
| - "openpyxl>=3.1.2,<4", |
204 |
| - ] |
205 |
| - subprocess.run([kernel_python_executable, '-m', 'pip', 'install'] + default_packages) |
| 181 | + kernel_env = os.environ.copy() |
| 182 | + kernel_connection_file = kernel_dir / "kernel_connection_file.json" |
| 183 | + launch_kernel_script_path = pathlib.Path(__file__).parent.resolve() / "launch_kernel.py" |
| 184 | + |
| 185 | + if not USE_SEPARATE_VENV: |
| 186 | + kernel_python_executable = sys.executable # TODO: here we could also pick up an already existing env by simply selecting the corresponding Python binary |
| 187 | + else: |
| 188 | + kernel_venv = kernel_dir / 'venv' |
| 189 | + kernel_venv_bindir = kernel_venv / 'bin' |
| 190 | + kernel_python_executable = kernel_venv_bindir / os.path.basename(sys.executable) |
| 191 | + kernel_env['PATH'] = str(kernel_venv_bindir) + os.pathsep + kernel_env['PATH'] |
| 192 | + |
| 193 | + # create virtual env inside kernel_venv directory |
| 194 | + subprocess.run([sys.executable, '-m', 'venv', kernel_venv, '--upgrade-deps', '--system-site-packages']) |
| 195 | + # install wheel because some packages do not like being installed without |
| 196 | + subprocess.run([kernel_python_executable, '-m', 'pip', 'install', 'wheel>=0.41,<1.0']) |
| 197 | + # install all default packages into the venv |
| 198 | + default_packages = [ |
| 199 | + "ipykernel>=6,<7", |
| 200 | + "numpy>=1.24,<1.25", |
| 201 | + "dateparser>=1.1,<1.2", |
| 202 | + "pandas>=1.5,<1.6", |
| 203 | + "geopandas>=0.13,<0.14", |
| 204 | + "tabulate>=0.9.0<1.0", |
| 205 | + "PyPDF2>=3.0,<3.1", |
| 206 | + "pdfminer>=20191125,<20191200", |
| 207 | + "pdfplumber>=0.9,<0.10", |
| 208 | + "matplotlib>=3.7,<3.8", |
| 209 | + "openpyxl>=3.1.2,<4", |
| 210 | + ] |
| 211 | + subprocess.run([kernel_python_executable, '-m', 'pip', 'install'] + default_packages) |
206 | 212 |
|
207 | 213 | # start the kernel using the virtual env python executable
|
208 | 214 | kernel_process = subprocess.Popen(
|
|
0 commit comments