2010-10-25 35 views
57

Después de instalar Python 2.7 en Windows XP, entonces configurando manualmente %PATH% en python.exe (¿por qué el instalador python no hará esto?), Luego instalando setuptools 0.6c11 (¿por qué el instalador de Python no hace esto?), luego configurando manualmente el %PATH% en easy_install.exe (¿por qué el instalador no hace esto?), finalmente traté de instalar un paquete de Python con easy_install, pero easy_install falló cuando no podía Instale el paquete pywin32, que es una dependencia. ¿Cómo puedo hacer que easy_install funcione correctamente en Windows XP? El fracaso sigue:Cómo usar Python's "easy_install" en Windows ... no es tan fácil

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: Eso no lo ayuda en absoluto. –

+0

@Sergio Tapia: solo una sugerencia. –

+0

Para responder a una pregunta anterior, el instalador de Python no modificará su variable PATH porque 1) no puede modificar la RUTA correctamente en la desinstalación, y 2) puede tener múltiples versiones de Python en el mismo sistema, y ​​esto puede causar inesperado comportamiento. Consulte http://bugs.python.org/issue3561 – Brandon

Respuesta

8

Un problema es que easy_install está configurado para descargar e instalar archivos .egg o distribuciones de origen (contenidas en archivos .tgz, .tar, .tar.gz, .tar.bz2 o .zip). No sabe cómo tratar con las extensiones PyWin32 porque se ponen within a separate installer executable. Deberá descargar el archivo instalador PyWin32 apropiado (para Python 2.7) y ejecutarlo usted mismo. Cuando ejecuta easy_install nuevamente (siempre que lo haya instalado correctamente, como en las instrucciones de Sergio), debería ver que su paquete winpexpect se ha instalado correctamente.

Dado que hablamos de Windows y código abierto, a menudo puede ser una combinación desordenada de métodos de instalación para que las cosas funcionen correctamente. Sin embargo, easy_install es aún mejor que los archivos de configuración de edición manual, seguro.

+0

Gracias por su ayuda. Al instalar manualmente el instalador de pywin32 exe, easy_install pudo instalar el paquete winpexpect sin errores. Sin embargo, cuando importo ese módulo dentro de python, muere con "ImportError: Ningún módulo llamado recurso". ¿Es este otro paso más que debo seguir para que mi entorno python funcione correctamente? ¿O es solo un error en el módulo winpexpect? – Nick

+1

OK: encontré la solución: además de instalar pywin32 manualmente, tuve que desinstalar los módulos pexpect y winpexpect, luego reinstalé solo el módulo winpexpect. En este punto, todo funciona. – Nick

+0

Seamos justos ...El desorden no se debe a que Windows sea de código cerrado, sino porque se ha dedicado más esfuerzo para garantizar que el proceso de instalación funcione sin problemas en Linux y que Windows haya sido una ocurrencia tardía. No hay ninguna razón para que easy_install no pueda descargar un paquete y usar MSBuild para compilarlo para el sistema local si es necesario. – Basic

1

Por un lado, se dice que ya tiene instalado el módulo. Si necesita actualizarlo, usted debe hacer algo como esto:

easy_install -U packageName

Por supuesto, easy_install no funciona muy bien si el paquete tiene algunas cabeceras C que necesitan ser compilado y se no tiene instalada la versión correcta de Visual Studio. Puede intentar usar pip o distribuir en lugar de easy_install y ver si funcionan mejor.

+0

Nunca se instaló por completo. Se bloqueó cada vez en dependencias. Es posible que haya * parcialmente * instalado antes, pero eso es todo. Como este módulo es para Windows, asumo que está precompilado. – Nick

23

Si está utilizando Windows 7 versión de 64 bits, a continuación, la solución se encuentra aquí: http://pypi.python.org/pypi/setuptools

saber, es necesario descargar un script en Python, ejecutarlo, y luego easy_install funcionará normalmente desde la línea de comandos.

P.S. Estoy de acuerdo con el cartel original que dice que esto debería funcionar de la caja.

9

También estoy de acuerdo con el OP que todas estas cosas deberían venir con Python ya configurado. Supongo que tendremos que lidiar con eso hasta que llegue ese día. Aquí es una solución que realmente funcionó para mí:

installing easy_install faster and easier

espero que usted o cualquier persona con el mismo problema ayuda!

+0

Esto realmente me ayudó. ¡Gracias! – Rafid

+0

¡De nada! – Eenvincible

6

Copie el siguiente script "ez_setup.py" de la URL a continuación

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

y copiarlo en su ubicación Python

C:\Python27>

Ejecutar el comando

C:\Python27? python ez_setup.py

Esto instalará el easy_install en el directorio Scripts

C:\Python27\Scripts

Run fácil instalar desde el directorio Scripts>

C:\Python27\Scripts> easy_install

0

Si está utilizando Anaconda's distribución Python,

se puede instalar a través de pepita

pip install setuptools

y luego ejecutarlo como una módulo

python -m easy_install

Cuestiones relacionadas