Cuando creo un nuevo virtualenv con Python 2.7 no puedo usar site.getsitepackages():

$ virtualenv testenv -p python2.7 --no-site-packages
Running virtualenv with interpreter /usr/bin/python2.7
New python executable in testenv/bin/python2.7
Also creating executable in testenv/bin/python
Installing setuptools............done.
Installing pip...............done.
$ cd testenv/
$ source bin/activate
(testenv)$ python
Python 2.7.1+ (r271:86832, Apr 11 2011, 18:05:24) 
[GCC 4.5.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import site
>>> site.getsitepackages()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>

AttributeError: 'module' object has no attribute 'getsitepackages'

Parece que site.py no tiene nuevas funciones que deberían estar allí desde Python 2.7.

¿Alguna sugerencia?

EDITAR: incluso si no uso --no-site-packages el problema persiste:

$ virtualenv testenv -p python2.7
Running virtualenv with interpreter /usr/bin/python2.7
New python executable in testenv/bin/python2.7
Also creating executable in testenv/bin/python
Installing setuptools............done.
Installing pip...............done.
$ cd testenv/
$ source bin/activate
(testenv)$ python
Python 2.7.1+ (r271:86832, Apr 11 2011, 18:05:24) 
[GCC 4.5.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import site
>>> site.getsitepackages()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: 'module' object has no attribute 'getsitepackages'
4
rubik 21 may. 2011 a las 14:33

3 respuestas

La mejor respuesta

Fue un error corregido en versiones posteriores de virtualenv. Busqué en las entradas, pero no pude encontrar la correcta ...

1
rubik 17 oct. 2012 a las 14:44

Está utilizando --no-site-packages, lo que hace que el nuevo entorno no herede los paquetes de sitio existentes.

0
ubik 21 may. 2011 a las 15:45

Probablemente esto no sea lo que está causando su problema, pero me ayudó después de 4 horas de depuración (también estoy respondiendo la pregunta 1 año después :).

El archivo virtualenv/bin/python debe ser ejecutable.

Entonces...

chmod +x virtualenv/bin/python

Trabajé aquí

0
JBernardo 20 jun. 2012 a las 20:57