2010-10-25 6 views
57

Dopo aver installato Python 2.7 su Windows XP, impostare manualmente il su python.exe (perché l'installazione di Python non lo farà?), Quindi installare setuptools 0.6c11 (perché l'installatore Python non esegue questa operazione?), quindi manualmente l'impostazione di %PATH% su easy_install.exe (perché l'installer non esegue questa operazione?), ho finalmente provato a installare un pacchetto python con easy_install, ma easy_install non è riuscito quando non è riuscito a ' t installare il pacchetto pywin32, che è una dipendenza. Come posso fare in modo che easy_install funzioni correttamente su Windows XP? Il fallimento segue:Come usare "easy_install" di Python su Windows ... non è così semplice

C:\>easy_install winpexpect 
Searching for winpexpect 
Best match: winpexpect 1.4 
Processing winpexpect-1.4-py2.7.egg 
winpexpect 1.4 is already the active version in easy-install.pth 

Using c:\python27\lib\site-packages\winpexpect-1.4-py2.7.egg 
Processing dependencies for winpexpect 
Searching for pywin32>=214 
Reading http://pypi.python.org/simple/pywin32/ 
Reading http://sf.net/projects/pywin32 
Reading http://sourceforge.net/project/showfiles.php?group_id=78018 
No local packages or download links found for pywin32>=214 
Best match: None 
Traceback (most recent call last): 
    File "C:\python27\scripts\easy_install-script.py", line 8, in 
    load_entry_point('setuptools==0.6c11', 'console_scripts', 'easy_install')() 
    File "C:\python27\lib\site-packages\setuptools\command\easy_install.py", line 1712, in main 
    with_ei_usage(lambda: 
    File "C:\python27\lib\site-packages\setuptools\command\easy_install.py", line 1700, in with_ei_usage 
    return f() 
    File "C:\python27\lib\site-packages\setuptools\command\easy_install.py", line 1716, in 
    distclass=DistributionWithoutHelpCommands, **kw 
    File "C:\python27\lib\distutils\core.py", line 152, in setup 
    dist.run_commands() 
    File "C:\python27\lib\distutils\dist.py", line 953, in run_commands 
    self.run_command(cmd) 
    File "C:\python27\lib\distutils\dist.py", line 972, in run_command 
    cmd_obj.run() 
    File "C:\python27\lib\site-packages\setuptools\command\easy_install.py", line 211, in run 
    self.easy_install(spec, not self.no_deps) 
    File "C:\python27\lib\site-packages\setuptools\command\easy_install.py", line 446, in easy_install 
    return self.install_item(spec, dist.location, tmpdir, deps) 
    File "C:\python27\lib\site-packages\setuptools\command\easy_install.py", line 481, in install_item 
    self.process_distribution(spec, dists[0], deps, "Using") 
    File "C:\python27\lib\site-packages\setuptools\command\easy_install.py", line 519, in process_distribution 
    [requirement], self.local_index, self.easy_install 
    File "C:\python27\lib\site-packages\pkg_resources.py", line 563, in resolve 
    dist = best[req.key] = env.best_match(req, self, installer) 
    File "C:\python27\lib\site-packages\pkg_resources.py", line 799, in best_match 
    return self.obtain(req, installer) # try and download/install 
    File "C:\python27\lib\site-packages\pkg_resources.py", line 811, in obtain 
    return installer(requirement) 
    File "C:\python27\lib\site-packages\setuptools\command\easy_install.py", line 434, in easy_install 
    self.local_index 
    File "C:\python27\lib\site-packages\setuptools\package_index.py", line 475, in fetch_distribution 
    return dist.clone(location=self.download(dist.location, tmpdir)) 
AttributeError: 'NoneType' object has no attribute 'clone' 
+9

@Rafe: Questo non lo aiuta affatto. –

+0

@Sergio Tapia: solo un suggerimento. –

+0

Per rispondere a una domanda precedente, il programma di installazione di Python non modificherà la variabile PATH perché 1) non può modificare correttamente il PATH in caso di disinstallazione e 2) è possibile avere più versioni Python sullo stesso sistema, e questo può causare imprevisti comportamento. Vedi http://bugs.python.org/issue3561 – Brandon

risposta

8

Un problema è che easy_install è impostato per scaricare e installare file .egg o distribuzioni di origine (contenute nei file .tgz, .tar, .tar.gz, .tar.bz2 o .zip). Non sa come comportarsi con le estensioni PyWin32 perché sono messe within a separate installer executable. Dovrai scaricare il file di installazione PyWin32 appropriato (per Python 2.7) ed eseguirlo da solo. Quando esegui di nuovo easy_install (a condizione che tu abbia installato correttamente, come nelle istruzioni di Sergio), dovresti vedere che il tuo pacchetto winpexpect è stato installato correttamente.

Poiché Windows e Open Source di cui stiamo parlando, può spesso essere una combinazione disordinata di metodi di installazione per far funzionare le cose correttamente. Tuttavia, easy_install è ancora meglio dei file di configurazione di modifica manuale, di sicuro.

+0

Grazie per il vostro aiuto. Installando manualmente il programma di installazione exe pywin32, easy_install è stato in grado di installare il pacchetto winpexpect senza errori. Tuttavia, quando importo quel modulo all'interno di python, muore con "ImportError: No module named resource". Questo è l'ennesimo passo che devo compiere per far funzionare correttamente il mio ambiente Python? O è solo un bug nel modulo winpexpect? – Nick

+1

OK: trovato la soluzione: oltre all'installazione manuale di pywin32, ho dovuto disinstallare i moduli pexpect e winpexpect, quindi reinstallare solo il modulo winpexpect. A questo punto tutto funziona. – Nick

+0

Siamo onesti ...Il caos non è dovuto al fatto che Windows è closed-source, è perché è stato fatto più sforzo per assicurarsi che il processo di installazione funzioni senza intoppi su Linux e Windows sia stato un ripensamento. Non c'è alcuna ragione per cui easy_install non possa scaricare un pacchetto e utilizzare MSBuild per compilarlo per il sistema locale, se necessario. – Basic

1

Per prima cosa, si dice si dispone già di quel modulo installato. Se è necessario aggiornare, si dovrebbe fare qualcosa di simile:

easy_install -U packageName

Naturalmente, easy_install non funziona molto bene se il pacchetto ha alcune intestazioni C che devono essere compilati e si non hai la versione corretta di Visual Studio installata. Potresti provare a utilizzare pip o distribuire invece di easy_install e vedere se funzionano meglio.

+0

Non è mai stato installato completamente. Si è schiantato ogni volta sulle dipendenze. Potrebbe avere * parzialmente * installato prima, ma il gioco è fatto. Dato che questo modulo è per Windows, presumo sia precompilato. – Nick

23

Se si utilizza Windows 7 versione a 64 bit, quindi la soluzione si trova qui: http://pypi.python.org/pypi/setuptools

vale a dire, è necessario scaricare uno script python, eseguirlo e quindi easy_install funzionerà normalmente da riga di comando.

P.S. Sono d'accordo con il poster originale che dice che questo dovrebbe funzionare fuori dagli schemi.

9

Sono anche d'accordo con l'OP che tutte queste cose dovrebbero venire con Python già impostato. Immagino che dovremo affrontarlo fino a quel giorno. Ecco una soluzione che in realtà ha funzionato per me:

installing easy_install faster and easier

Spero che voi o qualcuno con lo stesso problema aiuta!

+0

Questo mi ha davvero aiutato. Grazie! – Rafid

+0

Siete i benvenuti! – Eenvincible

6

Copia lo script seguente "ez_setup.py" dall'URL sotto

https://bootstrap.pypa.io/ez_setup.py

e copiarlo nella vostra posizione Python

C:\Python27>

Eseguire il comando

C:\Python27? python ez_setup.py

Questo installerà l'easy_install nella directory Scripts

C:\Python27\Scripts

Run facile installare dalla directory Script>

C:\Python27\Scripts> easy_install

0

Se si utilizza Anaconda's distribuzione Python,

è possibile installarlo tramite pip

pip install setuptools

e poi eseguirlo come module

python -m easy_install