|
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