Virtualenv: site.py non compatible avec python 2.7

CrĂ©Ă© le 9 nov. 2012  Â·  24Commentaires  Â·  Source: pypa/virtualenv

Nous utilisons exclusivement python 2.7 et c'est une surprise de découvrir aujourd'hui que site.py dans tous les environnements virtuels avec python 2.7 utilise le site.py de python 2.6 qui manque de nombreuses nouvelles fonctions ajoutées dans python 2.7.

Commentaire le plus utile

Comme solution de contournement : python -c "from distutils.sysconfig import get_python_lib; print(get_python_lib())" parvient à trouver l'emplacement de mon répertoire Python site-packages

Tous les 24 commentaires

pouvez-vous donner un exemple de ce qui ne fonctionne pas pour vous?

site.getsitepackages() ne fonctionne pas.

Reproduit sur OS X :

$ virtualenv -p python2.7 ve
$ ./ve/bin/python -c 'import site; print(getattr(site, "getsitepackages"))'
Traceback (most recent call last):
  File "<string>", line 1, in <module>
AttributeError: 'module' object has no attribute 'getsitepackages'

Courir à l'extérieur de venv fonctionne pour moi -

``` $ python -c 'import site; print(getattr(site, "getsitepackages"))' <function getsitepackages at 0x104198410>

``````

$ ./ve/bin/python -c 'site d'importation ; imprimer(site. fichier )'
/private/tmp/ve/lib/python2.7/site.pyc
$ python -c 'site d'importation ; print(site. file )'/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site.pyc

We ship our own `./virtualenv_embedded/site.py`

Envisagez de mettre à jour (et d'assurer la rétrocompatibilité) site.py

Je ne pense pas que cela devrait ĂȘtre marquĂ© comme un bloqueur de version. bien qu'il serait formidable de prendre en charge les fichiers site.py compatibles avec les fonctionnalitĂ©s, cette lacune existe depuis des annĂ©es.

"cette lacune est comme ça depuis des années". Et ouais, ça fait toujours mal... :(
Envisagez de résoudre ce problÚme svp, merci

Cela m'a mordu aujourd'hui; ce serait vraiment, vraiment bien d'avoir un site.py mis Ă  jour inclus dans virtualenv puisque l'ancienne version 2.6 n'a pas de choses comme site.getusersitepackages() .

Ça m'a mordu aussi, et ça m'a pris au dĂ©pourvu. Maintenant, je me demande mĂȘme quels autres fichiers diffĂšrent du systĂšme python (en particulier lors de l'utilisation --system-site-packages ) et quels autres "bugs" attendent


Toujours valide en utilisant virtualenv 13.1.2 avec Python 2.7.6, et cela gĂȘne certains travaux de dĂ©veloppement que je fais.

Voici quelques violons interactifs :

getsitepackages n'est pas présent dans virtualenv
$ virtualenv --version
13.1.2
$ virtualenv test
New python executable in test/bin/python
Installing setuptools, pip, wheel...done.
$ source test/bin/activate
$ which python
/home/user/test/bin/python
$ python
Python 2.7.6 (default, Jun 22 2015, 17:58:13)
[GCC 4.8.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import site
>>> 'getsitepackages' in dir(site)
False
>>> site.getsitepackages()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: 'module' object has no attribute 'getsitepackages'
>>>
getsitepackages est présent dans le systÚme Python
$ deactivate
$ python
Python 2.7.6 (default, Jun 22 2015, 17:58:13)
[GCC 4.8.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import site
>>> 'getsitepackages' in dir(site)
True
>>> site.getsitepackages()
['/usr/local/lib/python2.7/dist-packages', '/usr/lib/python2.7/dist-packages']
>>>

Edit : woah...... Je viens de lire : https://github.com/pypa/virtualenv/pull/697
Je pense que le temps est probablement mieux dépensé pour s'attaquer aux causes profondes, plutÎt qu'à ce symptÎme spécifique. Selon le déroulement de la réécriture, je suis plus que disposé à attendre les modifications nécessaires pour résoudre ce problÚme, en faveur des modifications discutées dans la réécriture.

Commentaire d'origine :
Je viens de me faire mordre par celui-ci aussi.

# Tried with and without --system-site-packages

[username@hostname] ~/dir $ virtualenv --system-site-packages venv
Using base prefix '/usr'
New python executable in venv/bin/python3.4
Also creating executable in venv/bin/python
Installing setuptools, pip, wheel...done.
[username@hostname] ~/dir $ venv/bin/python
Python 3.4.3 (default, Jul 28 2015, 18:20:59) 
[GCC 4.8.4] on linux
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'
>>> 

veuillez envisager de mettre Ă  jour site.py pour fournir site.getsitepackages()

Atteignez ce problĂšme avec # 555, ce qui peut entraĂźner un comportement diffĂ©rent dans un environnement virtuel si vous exĂ©cutez avec -Werror en raison de l'avertissement d'obsolescence. Étant donnĂ© que tox dĂ©pend de ce paquet pour fonctionner en interne, ne voyez pas vraiment comment le contourner.

+1 sad_panda et beaucoup de larmes

+1 cela m'a mordu aujourd'hui, le code fonctionne en dehors de virtualenv mais pas à l'intérieur.

+1 bouchée, y a-t-il une mise à jour ? Merci.

+1 mĂȘme problĂšme avec rk (noyau distant pour jupyter).

+1 morsure, fonctionne en dehors de virtualenv mais pas à l'intérieur.

Tout, je pense que pour le moment, la meilleure solution peut ĂȘtre de vendre site.py (ou des parties de celui-ci) dans vos projets.

Comme solution de contournement : python -c "from distutils.sysconfig import get_python_lib; print(get_python_lib())" parvient à trouver l'emplacement de mon répertoire Python site-packages

+1

+1 bouchée, y a-t-il une mise à jour ? Merci.

j'utilise virtualenv 15.0.1 sur Ubuntu 16.04 64bit

+1 bouchée
(virtualenv 15.1.0 sur CentOS 7.5.1804)

Depuis que je suis passé à py3, j'ai cessé d'utiliser virtualenv et j'utilise le propre venv de python. Avec python 3.6+, un venv minimaliste ne comprend que quelques liens symboliques :

$ python3.6 -m venv --without-pip grut
$ tree grut/
grut/
├── bin
│   ├── activate
│   ├── activate.csh
│   ├── activate.fish
│   ├── python -> python3.6
│   ├── python3 -> python3.6
│   └── python3.6 -> /usr/bin/python3.6
├── include
├── lib
│   └── python3.6
│       └── site-packages
├── lib64 -> lib
└── pyvenv.cfg

6 directories, 7 files

Donc, fini virtualenv et toutes ses bizarreries pour moi. HTH les autres.

@RemiCardona J'utilise venv de Python 3 autant que possible, mais malheureusement tox utilise toujours virtualenv (mĂȘme lors du test de Python 3), donc je suis confrontĂ© Ă  ce problĂšme chaque fois que j'utilise tox pour automatiser les tests ou faire de l'intĂ©gration continue. 😞

Ce problÚme a été automatiquement marqué comme obsolÚte, car il n'a pas eu d'activité récente. Il sera fermé s'il n'y a plus d'activité. Ajoutez simplement un commentaire si vous souhaitez le garder ouvert. Merci pour vos contributions.

Cette page vous a été utile?
0 / 5 - 0 notes

Questions connexes

npinto picture npinto  Â·  4Commentaires

schlamar picture schlamar  Â·  4Commentaires

Tset-Noitamotua picture Tset-Noitamotua  Â·  4Commentaires

neildhar picture neildhar  Â·  4Commentaires

jwarren116 picture jwarren116  Â·  5Commentaires