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.
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 :
$ 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'
>>>
$ 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.
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