Topic: errore virtualenv  (Letto 943 volte)

0 Utenti e 1 Visitatore stanno visualizzando questo topic.

Offline DragLag

  • python habilis
  • **
  • Post: 69
  • Punti reputazione: 0
    • Mostra profilo
    • mirkosecke
errore virtualenv
« il: Luglio 20, 2017, 10:00 »

(venv) C:pyworldpyproj>python
Python 2.7 (r27:82525, Jul  4 2010, 09:01:59) [MSC v.1500 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.

(venv) C:pyworldpyproj>python run.py
Traceback (most recent call last):
  File "run.py", line 2, in <module>
    from app.dataorder import Obj_coll
  File "C:pyworldpyprojdraglag-scrarch-b34993592348appdataorder.py", line 91
    print test.price_sorted()
             ^
SyntaxError: invalid syntax

(venv) C:pyworldpyproj>python
Python 3.6.1 (v3.6.1:69c0db5, Mar 21 2017, 18:41:36) [MSC v.1900 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>>


Starei cercando di passare definitivamente a python 3 e di convertire vecchi applicativi scritti ancora in python 2.7. 

attivo in virtualenv ed effettivamente python 2,7 risulta attivo. provo a far girare l applicazione, mi mostra l errore e subito dopo virtualenv sembra avere cambiato interprete passando a 3.6. sapreste dirmi come mai virtualenv cambia automaticamente interprete? sapreste come fissarlo su python 2.7?
« Ultima modifica: Luglio 20, 2017, 13:00 da DragLag »

Offline Giornale di Sistema

  • python sapiens sapiens
  • ******
  • Post: 3.124
  • Punti reputazione: 4
    • Mostra profilo
    • Distillato di Python
Re:errore virtualenv
« Risposta #1 il: Luglio 20, 2017, 10:46 »
sapreste darmi qualche dritta?

print "pippo"  # Python 2.x
print("pippo")  # Python 3.x

http://distillatodipython.blogspot.it/p/risorse-python.html#differenze-python2x-3x

Offline DragLag

  • python habilis
  • **
  • Post: 69
  • Punti reputazione: 0
    • Mostra profilo
    • mirkosecke
Re:errore virtualenv
« Risposta #2 il: Luglio 20, 2017, 11:34 »
Grazie Giornale di Sistema

Ho modificato il post sperando che sia piu chiaro.

Offline Giornale di Sistema

  • python sapiens sapiens
  • ******
  • Post: 3.124
  • Punti reputazione: 4
    • Mostra profilo
    • Distillato di Python
Re:errore virtualenv
« Risposta #3 il: Luglio 20, 2017, 12:18 »
Non so esattamente come funzioni sotto Windows e se centri qualcosa, vedo però che tra il primo ed il secondo lancio della shell Python non sei nella stessa directory. Potrebbe anche essere importante come attivi il virtualenv.
« Ultima modifica: Luglio 20, 2017, 12:21 da Giornale di Sistema »

Offline DragLag

  • python habilis
  • **
  • Post: 69
  • Punti reputazione: 0
    • Mostra profilo
    • mirkosecke
Re:errore virtualenv
« Risposta #4 il: Luglio 20, 2017, 13:01 »
Ho provato anche nella stessa directory ma il risultato e uguale(ti ringrazio della segnalazion ho rimodificato il post)

Offline RicPol

  • python sapiens sapiens
  • ******
  • Post: 2.851
  • Punti reputazione: 9
    • Mostra profilo
Re:errore virtualenv
« Risposta #5 il: Luglio 20, 2017, 14:15 »
Non so esattamente come funzioni sotto Windows e se centri qualcosa, vedo però che tra il primo ed il secondo lancio della shell Python non sei nella stessa directory. Potrebbe anche essere importante come attivi il virtualenv.
Mah sai, su windows funziona come funziona ovunque. La sequenza che adesso compare nel primo post dell'OP (al quale suggeriscono di non modificare i post, ma piuttosto di scriverne altri con la versione giusta. Non è che possiamo sempre fare un diff sulla cache del browser solo per capire che cosa hai cambiato) è strana, e sembra impossibile a meno che ovviamente lo script al suo interno non si metta a pasticciare con la path. Oppure c'è qualcosa che non va con il suo antidiluviano python 2.7 a 32 bit, va a sapere. Così di primo acchito la sensazione è che l'OP non ci stia dicendo tutta la storia. In ogni caso, siccome un venv in Pyhton è solo manipolazione di path, gli direi di riavviare la shell e ricominciare con calma tutto daccapo, prendendosi nota con cura e massima precisione di quello che sta facendo, di come è la path per la sua shell a ogni passaggio, di cosa fa esattamente lo script.
Per il resto, ho apposta scritto una lunga e faticosa guida a Python su windows (link in firma) per poter rimandare a quella in casi del genere.  :)

Offline DragLag

  • python habilis
  • **
  • Post: 69
  • Punti reputazione: 0
    • Mostra profilo
    • mirkosecke
Re:errore virtualenv
« Risposta #6 il: Luglio 20, 2017, 16:11 »
Citazione
Non è che possiamo sempre fare un diff sulla cache del browser solo per capire che cosa hai cambiato

Ma anche no. Se qui si usa rifare i post rifaro i post...

anche se sinceramente:

Citazione
al quale suggeriscono di non modificare i post, ma piuttosto di scriverne altri

Non mi pare di aver letto nessun suggerimento a riguardo. magari me sfuggito.


Citazione
Mah sai, su windows funziona come funziona ovunque

mah, a essere sincerto su linux ho molti meno problemi... saro che windows non mi sta molto simpatico.

Cmq ti ringrazio dei consigli. vedro di rifarmi il virtualenv da capo...  o meglio provero a usare requirements.txt... altrimenti da capo...



Offline riko

  • python deus
  • *
  • moderatore
  • Post: 7.453
  • Punti reputazione: 12
    • Mostra profilo
    • RiK0 Tech Temple
Re:errore virtualenv
« Risposta #7 il: Luglio 20, 2017, 20:14 »
Citazione
Non è che possiamo sempre fare un diff sulla cache del browser solo per capire che cosa hai cambiato

Ma anche no. Se qui si usa rifare i post rifaro i post...

anche se sinceramente:

Citazione
al quale suggeriscono di non modificare i post, ma piuttosto di scriverne altri

Non mi pare di aver letto nessun suggerimento a riguardo. magari me sfuggito.

Scusa, ma e' buon senso. Se aggiusti la grammatica o cambi due cose e' ok. Ma se fai si che chi ti ha risposto sembra rincoglionito perche' hai cambiato la domanda... beh, probabilmente non e' una grande idea.
In questo caso il problema e' che lo *storico* della discussione e' utile.

1. Ho provato A e non funziona.
2. Cosa intendi con "non funziona"?
3. -- gia' qui editare 1 farebbe sembrare 2 un coglione, comunque -- Ho fatto questo e questo e mi da questo errore.
4. Ok, prova a fare B.
5. Anche B non funziona.

Ecco, ora immagina che fai un nuovo tentativo C e modifichi il primo post.

a. diventa difficile capire che hai fatto
b. la conversazione diventa surreale

Offline DragLag

  • python habilis
  • **
  • Post: 69
  • Punti reputazione: 0
    • Mostra profilo
    • mirkosecke
Re:errore virtualenv
« Risposta #8 il: Luglio 21, 2017, 09:33 »
Mi scuso eventualmente con chi si e sentito un coglione... non era assolutamente mia intenzione.
e comunque ho sempre specificato, in seguito a segnalazione o un commento, quando e cosa editavo.
in questo caso passerei io per coglione che non sono in grado di scrivere un post decente.

i cambiamenti sono stati:
1- una richiesta piu specifica.
avendo scritto

Citazione
attivo in virtualenv ed effettivamente python 2,7 risulta attivo. provo a far girare l applicazione, mi mostra l errore e subito dopo virtualenv sembra avere cambiato interprete passando a 3.6

e avendo mostrato l output bash mi sembrava chiaro che la mia attenzione era rivolta a virtualenv e al cambiamento di interprete che non tanto all'errore di sintassi.

2- la location della directory: gia che nel quote le back slash non vengono riportare ho pensato che fosse meglio fare un po di ordine(tanto come specificato il risultato non cambia cambiando il percorso della directory)

buon senso... Ho provato a girare su stackoverflow dove trovo scritto, da qui https://stackoverflow.com/help/privileges/edit:
Citazione
Any time you feel you can make the post better, and are inclined to do so. Editing is encouraged!

Il mio buon senso era quello di rendere l OP piu chiaro possibile, di certo non sminuire chi cercava di darmi una mano.

Comunque vedro di attenermi

anche se... (premetto che vorrei solo fare critica costruttiva se possibile...)

http://www.python-it.org/forum/index.php?topic=2580

vedo un esempio e non tanto linee guida...

Vi ringrazio comunque tutti per l'attenzione



Offline Giornale di Sistema

  • python sapiens sapiens
  • ******
  • Post: 3.124
  • Punti reputazione: 4
    • Mostra profilo
    • Distillato di Python
Re:errore virtualenv
« Risposta #9 il: Luglio 21, 2017, 09:57 »
Vi ringrazio comunque tutti per l'attenzione

Premesso che non ho letto la guida di RicPol (devo ricordarmi di metterla tra le mie risorse consigliate!  :devil:) senz'altro vedere come cambiano i path tra la prima e seconda esecuzione di Python darebbe i primi importanti indizi. Hai già controllato se/come cambiano? Per caso li manipoli all'interno dello script?

Offline RicPol

  • python sapiens sapiens
  • ******
  • Post: 2.851
  • Punti reputazione: 9
    • Mostra profilo
Re:errore virtualenv
« Risposta #10 il: Luglio 21, 2017, 11:37 »
Davvero, mi rendo conto di essere noioso a ripetermi, ma... questo è il classico caso in cui non sappiamo tutta la storia. Non sappiamo neanche se l'OP la sa lui, tutta la storia. E' inutile fantasticarci troppo sopra.

Per l'OP, direi (dal generale al particolare):
Primo, non si capisce perché non usi linux, se dici che ti dà meno problemi. Stai cercando di migrare a py3 un programma, non mi sembra un compito molto windows-specific. Puoi tranquillamente farlo su linux, e poi al limite testare se gira anche su windows.
Secondo, non si capisce perché hai un python 2.7 vecchissimo a 32 bit (!) sulla stessa macchina su cui hai un python 3.6 nuovissimo a 64 bit. Se dovessi dire una cosa molto windows-specific che in effetti potrebbe darti dei problemi (forse perfino quelli di cui stiamo parlando qui, ma non ci giurerei), direi che è questa. Butta via quel python vecchio, installati un python 2.7.13 a 64bit, e deriva i tuoi virtual env da quello.
Terzo, leggiti la mia guida.
Quarto, non c'è nessuna magia nera dietro un venv, né su linux né su windows. E' manipolazione della path. Usa echo %path% nella shell per vedere la path che la tua shell vede al momento, e usa import sys; print(sys.executable) dentro python per vedere quale interprete python esattamente stai usando in quel momento. Ti consiglio di inserire questa riga anche all'interno del tuo script, come prima cosa nell'entry-point. Così ti togli ogni dubbio.
Quinto, apri una shell n-u-o-v-a (ti direi di riavviare il computer, ma diamine, non dovrebbe proprio essere il caso) e ripeti tutti i passaggi daccapo, lentamente. Fai echo path, poi attiva un venv, poi fai di nuovo echo path, poi apri la repl di python, poi fai print(sys.executable), poi chiudi la repl, poi avvia il tuo script, poi fai di nuovo echo path, poi apri l'altro venv, poi fai di nuovo echo path, poi apri la repl di python, poi fai di nuovo print(sys.executable), poi esci dalla repl. Poi prendi l'output della shell, copialo t-u-t-t-o (non come hai fatto prima) e postalo.
Se ti va. Se non ti va, va bene lo stesso, ma allora capisci che entriamo nel dominio della sfera di cristallo.

Offline DragLag

  • python habilis
  • **
  • Post: 69
  • Punti reputazione: 0
    • Mostra profilo
    • mirkosecke
Re:errore virtualenv
« Risposta #11 il: Luglio 21, 2017, 13:53 »
Non uso Linux perche sul posto di lavoro mi costringono a usare Windows.

Comunque....

Ripensandoci puo essere che la versione che avevo nel virtualenv era a 64 bit(non ricordo... in seguito  a un virus abbiamo formattato TUUUUUUTTI i pc in azienda, server compresi. Nonostante tutto sono ancora costretto a usare windows ) mentre quella che ho installato era un 32bit (in effetti l ho installato per sbaglio... mea culpa)
Scaricando il repository dal git su cui avevo tutto il virtualenv gia pronto ho provato a modificare la posizione dell'interprete nel file virtualenvLiborigin-prefix.txt .
Mi succedeva la scherzo che ho postato nell OP.

Ho aggiornato il python 2.7 a 64 bit.
Ho provato a riaggionare il file virtualenvLiborigin-prefix.txt ma mi diceva che non trovava python.dll
al che ho eliminato tutto il virtualenv e l ho rifatto da capo.

Bhe funziona.

 :ok: :ok: :ok: :ok: :ok: :ok: arigrazie!



Offline RicPol

  • python sapiens sapiens
  • ******
  • Post: 2.851
  • Punti reputazione: 9
    • Mostra profilo
Re:errore virtualenv
« Risposta #12 il: Luglio 21, 2017, 15:04 »
Ripensandoci puo essere che la versione che avevo nel virtualenv era a 64 bit(non ricordo... in seguito  a un virus abbiamo formattato TUUUUUUTTI i pc in azienda, server compresi. Nonostante tutto sono ancora costretto a usare windows ) mentre quella che ho installato era un 32bit (in effetti l ho installato per sbaglio... mea culpa)
Scaricando il repository dal git su cui avevo tutto il virtualenv gia pronto ho provato a modificare la posizione dell'interprete nel file virtualenvLiborigin-prefix.txt .
Mi succedeva la scherzo che ho postato nell OP.

Wow.
Quando ho detto che non sapevamo tutta la storia, non potevo prevedere questo frattale di situazioni horror.
Io consiglierei di rivedere con calma tutto il tuo/vostro workflow. Adesso che viene l'estate, magari uno due settimane le trova.
Comunque, se adesso "funziona", bene così.

Offline DragLag

  • python habilis
  • **
  • Post: 69
  • Punti reputazione: 0
    • Mostra profilo
    • mirkosecke
Re:errore virtualenv
« Risposta #13 il: Luglio 25, 2017, 08:43 »
Grazie dei consigli, ho gia fatto il grosso senza troppi problemi... mi rimane sempre il dubbio se quello che faccio e "accettabile" o meno.

Si funziona ma il problema molte volte e come funziona.





 

Offline RicPol

  • python sapiens sapiens
  • ******
  • Post: 2.851
  • Punti reputazione: 9
    • Mostra profilo
Re:errore virtualenv
« Risposta #14 il: Luglio 25, 2017, 11:47 »
>  se quello che faccio e "accettabile" o meno

Uhm, diciamo che "accettabile" non è la parola che mi verrebbe in mente, qui. Cioè, non è che la tua descrizione sia completamente chiara, ma... proviamo ad analizzarla un po'.

Citazione
Ripensandoci puo essere che la versione che avevo nel virtualenv era a 64 bit(non ricordo... in seguito  a un virus abbiamo formattato TUUUUUUTTI i pc in azienda, server compresi. Nonostante tutto sono ancora costretto a usare windows ) mentre quella che ho installato era un 32bit (in effetti l ho installato per sbaglio... mea culpa)
Scaricando il repository dal git su cui avevo tutto il virtualenv gia pronto ho provato a modificare la posizione dell'interprete nel file virtualenvLiborigin-prefix.txt .
Mi succedeva la scherzo che ho postato nell OP.


> Ripensandoci

Ripensandoci?! Cioè, siamo nel 2017 e hai bisogno di "ripensarci"? Ora, magari non è proprio che uno metta in piedi un sistema di continuous integration  e automatic deployment per ogni singolo script da dieci righe che fa... ma cavolo... almeno un backup giornaliero come si faceva già negli anni '90, no?

>  in seguito  a un virus abbiamo formattato TUUUUUUTTI i pc in azienda, server compresi.

Ma no, davvero: siamo nel 2017 o nel 1997? Voglio dire, va bene che windows non è un sistema operativo particolarmente sicuro, ma che diamine. Io spero che dopo aver formattato TUUUUUUUTTi i pc server compresi, abbiate anche licenziato in tronco TUUUUUTTO il reparto IT, dirigenti compresi.

> Nonostante tutto sono ancora costretto a usare windows

Le mie condoglianze. Nessuno vi costringe a usarlo male, però.
Windows ha un sacco di colpe, ma vi prego, vi prego, vi prego: N-O-N date a windows la colpa del fatto che non sapete come usarlo.

> mentre quella che ho installato era un 32bit (in effetti l ho installato per sbaglio... mea culpa)

Ok per il mea culpa. Ma capisci, se ti metti il cappello di programmatore, un po' ci si aspetta che tu sappia quello che stai installando. Non sei proprio il niubbo che fa clic-clic alla cavolo di cane sul primo exe che scarica, no? Comunque non credo che il problema fosse 32/64, ma che hai installato una versione di python 2.7 troppo vecchia. La 2.7.13 va benissimo.

> Scaricando il repository dal git su cui avevo tutto il virtualenv gia pronto

Ecco, quando ho letto questo proprio mi sono cascate le palle degli occhi per terra. Ho capito bene? Hai fatto un venv di python, lo hai messo sotto git e hai pure fatto push su un remoto online (su github, suppongo)? Ma me lo dici che senso ha?
Metti sotto git i file SU CUI STAI LAVORANDO, no? Stai lavorando sui file della libreria standard di python? Stai cercando di forkare python, o stai collaborando in qualche modo a python? Suppongo di no. E allora che senso ha mettere un'installazione di python sotto git? E siccome metterla sotto git in locale non ti basta, te la sincronizzi anche su un remoto online. Così, tanto per inquinare un po' di più il pianeta usando spazio su un server (tanto è aggratis), e soprattutto inquinare con risultati spuri le ricerche che poi la povera gente farà su Github.
Allora: un virtual env NON si mette sotto git, e francamente NON si deve neanche backuppare o salvare o averne riguardo in qualunque modo. Un venv è UNIVOCAMENTE DETERMINATO da due cose: la versione di python da cui è stato creato (segnatela su un post-it) e un file requirements.txt che ottieni da pip facendo pip freeze > requirements.txt. Il file requirements.txt, questo sì che invece deve essere messo sotto git, insieme agli altri file del tuo progetto python che utilizza quel venv. Perché il file requirements.txt è il solo modo di capire che cosa deve esserci esattamente nel venv perché il tuo progetto possa funzionare. E' un file che cambia nel tempo a seconda di come cambia il tuo progetto, e quindi è giusto che stia sotto git insieme al tuo progetto. SOLO quel file, non tutto il venv. La directory del venv, di per sé, non deve MAI essere manipolata in nessun modo, tranne che attraverso pip. Se il venv per qualsiasi motivo diventa corrotto, lo perdi, se lo mangia il gatto, il cane ci fa la pipì sopra, NON IMPORTA: lo butti via e ne fai un altro, e poi reinstalli i pacchetti necessari con pip install -r requirements.txt. E basta, non devi fare altro.

Ora, ho scritto una lunga guida su come lavorare in python su windows, APPOSTA per non dover ripetere queste spiegazioni ogni volta. E invece.

> ho provato a modificare la posizione dell'interprete nel file virtualenvLiborigin-prefix.txt .

Arrivati a questo punto le palle degli occhi mi erano già cascate, quindi ti lascio immaginare quali altre palle le abbiano seguite.
Di nuovo, non è molto chiaro quello che scrivi, ma non riesco a immaginare un universo parallelo in cui abbia senso mettere la path (assoluta, magari) dell'interprete di un venv in un file con un nome che sembra uno scioglilingua in maori.
Allora: diciamo che esiste un progetto python, mettiamo che abbia un entry point che si chiama script.py. Questo progetto python ha bisogno di un determinato venv per funzionare. Quindi: si crea il venv adatto, ci si installano dentro i pacchetti necessari, si apre una bella shell, si attiva il venv, e si fa python script.py. Questo è quanto. Stop. Tutto qui. Nessun bisogno di strani file di testo con nomi in maori.


> Mi succedeva la scherzo che ho postato nell OP.

Mah, ormai non so se si può ricostruire quello che è successo davvero. Ma la sensazione è che "lo scherzo" non è quello che succedeva.
Lo scherzo è tutto quello che ci stava a monte.


« Ultima modifica: Luglio 25, 2017, 11:52 da RicPol »