Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > it.comp.lang.python > #7863

Re: Pip on WinXp

From jak <nospam@please.ty>
Newsgroups it.comp.lang.python
Subject Re: Pip on WinXp
Date 2023-08-08 22:50 +0200
Organization A noiseless patient Spider
Message-ID <uau9rj$3huap$1@dont-email.me> (permalink)
References (2 earlier) <u85oam$rmfs$1@dont-email.me> <u8emst$2618e$1@dont-email.me> <u8m9c3$39no2$1@dont-email.me> <5f8162be-a6f4-1837-6e82-dce91e0eaf96@please.ty> <uaspuu$39mev$1@dont-email.me>

Show all headers | View raw


News@tin.it.no ha scritto:
> "jak" <nospam@please.ty> ha scritto nel messaggio
> news:5f8162be-a6f4-1837-6e82-dce91e0eaf96@please.ty...
>> News@tin.it.no ha scritto:
>>>>>
>>>>
>>>> Quindi ora funziona? Buono!
>>>
>>> non mi pare che funzioni.
>>> where non c'è.
>>>
>>>
>>> C:\WINDOWS\system32>py -0
>>> Requested Python version (0) not installed
>>> C:\WINDOWS\system32>
>>>
>>>
>>>
>>
>> Ho fatto delle ricerche ed a quanto ho capito in
>> Windows XP il comando "where" lo dovresti avere.
>> Probabilmente, oltre avere Windows XP, che Microsoft
>> ormai non manutiene più, non hai nemmeno la sua
>> versione più aggionata.
>> In ogni caso se volessi proprio utilizzare il comando
>> "where", te ne propongo una versione meno efficiente
>> ma che a me funziona. Non è che un'idea circa il metodo
>> con cui potresti costruirti il comando con un file
>> batch (.bat o .cmd) e comunque ti da l'idea di come
>> funziona il comando:
>>
>> @for %%e in (%PATHEXT%) do @for %%i in (%1%%e) do @if NOT "%%~$PATH:i"==""
>> echo %%~$PATH:i
>>
> 
> si apre e si chiude file.bat. ma non si fa a tempo a vedere nulla anche se
> aggiungo il comando pause
> 
> 

Questo succede perché non hai il comando 'where' il quale, come puoi
notare dalla linea di script, dipende da 2 variabili di ambiente (vale
anche per il comando 'where' originale): PATH e PATHEXT. La prima
contiene l'elenco dei percorsi in cui il sistema cerca i comandi da
lanciare quando si utilizza il prompt, mentre la seconda contiene
l'elenco di estensioni che il programma lanciato al prompt potrebbe
avere.
Di queste 2 variabili, probabilmente ne avrai una sola configurata e ti
dovrebbe mancare PATHEXT. Inoltre questi comandi andrebbero eseguiti al
prompt e non lanciati da Explorer, sopratutto perché sono comandi che
richiedono l'aagiunta di paramentri quando vengono avviati e questi non
glie li puoi aggiungere avviandoli da Explorer (per prompt intendo
avviare CMD.EXE su windows o cliccando sull'icona "prompt dei comandi").

Purtroppo il fatto che tu intendessi utilizzare il python mi ha portato
a pensare che tu avessi una discreta dimestichezza con l'utilizzo del
sistema al prompt, cosa che comunque dovrai acquisire se intendi
utilizzare il python (in realtà non ho ancora capito se intendi
utilizzarlo per sviluppare programmi o solo per utilizzarne alcuni).
Fatta questa premessa, se intendi scriverti il comado 'where' dovrai
scrivere un file batch un poco più complesso rispetto alla linea che ti
ho inviato che doveva essere un seplice esempio ed i passi dovrebbero
essere:
- verificare che sia dato un nome programma come parametro
- verificare che la variabile PATH esista e contenga qualcosa
- verificare che la variabile PATHEXE esista e contenga qualcosa
    - se non esiste crearne una con un elenco di estensioni minimale
- se il comando dato come parametro è comprensivo di estensione ignorare
   la variabile PATHEXE
- fare la ricerca
Di seguito ti invio un esempio di come potrebbe essere uno script che
segua i punti che ho elencato:

:::: Inizio batch
@echo off
setlocal ENABLEDELAYEDEXPANSION

if "%1" == "" goto :uso_where
if not "%2" == "" goto :uso_where
if "%PATH%" == "" (
     echo.
     echo Variabile PATH non settata.
     goto :eof
)

call :split_name %1 PNAME PEXT

if not "%PEXT%" == "" set "PATHEXT=%PEXT%"
if "%PATHEXT%" == "" (
     set "PATHEXT=.COM;.EXE;.BAT;.CMD;.VBS;.JS"
)

set /A IF_PRINT=0
for %%e in (%PATHEXT%) do (
     for %%i in (%PNAME%%%e) do (
         if NOT "%%~$PATH:i" == "" (
             if !IF_PRINT! equ 0 (
                 set /A IF_PRINT=1
                 echo.
             )
             echo %%~$PATH:i
         )
     )
)

endlocal
goto :eof

:uso_where
echo.
echo Uso: where ^<nome programma^>
goto :eof

:split_name
setlocal
endlocal && set "%2=%~n1" && set "%3=%~x1"
goto :eof
:::: Fine batch

Che utilizzato al prompt produce questi risultati:

[D:\jak]
$> where.bat

Uso: where <nome programma>

[D:\jak]
$> where.bat python

c:\Python3\python.exe

[D:\jak]
$>  where.bat python.exe

c:\Python3\python.exe

[D:\jak]
$>

...anche se la variabile PATHEXT non esiste mantre emette una
segnalazione se la avriabile PATH non esiste.

Back to it.comp.lang.python | Previous | NextPrevious in thread | Next in thread | Find similar


Thread

Pip on WinXp "News@tin.it.no" <news@tin.it.no> - 2023-04-01 10:05 +0200
  Re: Pip on WinXp jak <nospam@please.ty> - 2023-04-11 23:58 +0200
    Re: Pip on WinXp "News@tin.it.no" <news@tin.it.no> - 2023-07-06 08:50 +0200
      Re: Pip on WinXp jak <nospam@please.ty> - 2023-07-09 18:22 +0200
        Re: Pip on WinXp "News@tin.it.no" <news@tin.it.no> - 2023-07-12 15:21 +0200
          Re: Pip on WinXp jak <nospam@please.ty> - 2023-07-12 18:56 +0200
            Re: Pip on WinXp jak <nospam@please.ty> - 2023-07-12 19:02 +0200
          Re: Pip on WinXp jak <nospam@please.ty> - 2023-07-12 19:00 +0200
            Re: Pip on WinXp "News@tin.it.no" <news@tin.it.no> - 2023-08-08 09:13 +0200
              Re: Pip on WinXp jak <nospam@please.ty> - 2023-08-08 22:50 +0200
                Re: Pip on WinXp "News@tin.it.no" <news@tin.it.no> - 2023-08-10 08:37 +0200
                Re: Pip on WinXp jak <nospam@please.ty> - 2023-08-10 10:30 +0200

csiph-web