@@ -371,16 +371,22 @@ export async function quickCreateVenv(
371371 if ( additionalPackages ) {
372372 allPackages . push ( ...additionalPackages ) ;
373373 }
374- return await createWithProgress (
375- nativeFinder ,
376- api ,
377- log ,
378- manager ,
379- baseEnv ,
380- venvRoot ,
381- path . join ( venvRoot . fsPath , '.venv' ) ,
382- { install : allPackages , uninstall : [ ] } ,
383- ) ;
374+
375+ // Check if .venv already exists
376+ let venvPath = path . join ( venvRoot . fsPath , '.venv' ) ;
377+ if ( await fsapi . pathExists ( venvPath ) ) {
378+ // increment to create a unique name, e.g. .venv-1
379+ let i = 1 ;
380+ while ( await fsapi . pathExists ( `${ venvPath } -${ i } ` ) ) {
381+ i ++ ;
382+ }
383+ venvPath = `${ venvPath } -${ i } ` ;
384+ }
385+
386+ return await createWithProgress ( nativeFinder , api , log , manager , baseEnv , venvRoot , venvPath , {
387+ install : allPackages ,
388+ uninstall : [ ] ,
389+ } ) ;
384390}
385391
386392export async function createPythonVenv (
@@ -393,7 +399,6 @@ export async function createPythonVenv(
393399 options : { showQuickAndCustomOptions : boolean ; additionalPackages ?: string [ ] } ,
394400) : Promise < PythonEnvironment | undefined > {
395401 const sortedEnvs = ensureGlobalEnv ( basePythons , log ) ;
396- const project = api . getPythonProject ( venvRoot ) ;
397402
398403 let customize : boolean | undefined = true ;
399404 if ( options . showQuickAndCustomOptions ) {
@@ -403,26 +408,11 @@ export async function createPythonVenv(
403408 if ( customize === undefined ) {
404409 return ;
405410 } else if ( customize === false ) {
406- sendTelemetryEvent ( EventNames . VENV_CREATION , undefined , { creationType : 'quick' } ) ;
407- const installables = await getProjectInstallable ( api , project ? [ project ] : undefined ) ;
408- const allPackages = [ ] ;
409- allPackages . push ( ...( installables ?. flatMap ( ( i ) => i . args ?? [ ] ) ?? [ ] ) ) ;
410- if ( options . additionalPackages ) {
411- allPackages . push ( ...options . additionalPackages ) ;
412- }
413- return await createWithProgress (
414- nativeFinder ,
415- api ,
416- log ,
417- manager ,
418- sortedEnvs [ 0 ] ,
419- venvRoot ,
420- path . join ( venvRoot . fsPath , '.venv' ) ,
421- { install : allPackages , uninstall : [ ] } ,
422- ) ;
411+ return quickCreateVenv ( nativeFinder , api , log , manager , sortedEnvs [ 0 ] , venvRoot , options . additionalPackages ) ;
423412 } else {
424413 sendTelemetryEvent ( EventNames . VENV_CREATION , undefined , { creationType : 'custom' } ) ;
425414 }
415+ const project = api . getPythonProject ( venvRoot ) ;
426416
427417 const basePython = await pickEnvironmentFrom ( sortedEnvs ) ;
428418 if ( ! basePython || ! basePython . execInfo ) {
0 commit comments