Usamos o python 2.7 exclusivamente e é uma surpresa descobrir hoje que site.py em todos os envs virtuais com python 2.7 usam o site.py do py2.6 que carece de muitas novas funções adicionadas no python 2.7.
você pode dar um exemplo do que não está funcionando para você?
site.getsitepackages() não funciona.
Reproduzido no 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'
Correr fora do venv funciona para mim -
```
$ python -c 'import site; print(getattr(site, "getsitepackages"))'
<function getsitepackages at 0x104198410>
``````
$ ./ve/bin/python -c 'site de importação; print(site. arquivo )'
/private/tmp/ve/lib/python2.7/site.pyc
$ python -c 'site de importação; print(site. file )'/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site.pyc
We ship our own `./virtualenv_embedded/site.py`
Considere atualizar (e garantir a compatibilidade com versões anteriores) site.py
Eu não acho que isso deve ser marcado como um bloqueador de lançamento. embora seja ótimo oferecer suporte a arquivos site.py compatíveis com recursos, essa deficiência é assim há anos.
"essa deficiência é assim há anos". E sim, ainda dói... :(
Considere consertar isso plz, thx
Isso me mordeu hoje; seria muito, muito bom ter um site.py
atualizado incluído em virtualenv
já que a versão 2.6 antiga não tem coisas como site.getusersitepackages()
.
Ele me mordeu também, e me pegou desprevenido. Agora estou até me perguntando quais outros arquivos diferem do python do sistema (especialmente ao usar --system-site-packages
) e quais outros "bugs" estão à espera…
Ainda é válido usando virtualenv 13.1.2 com Python 2.7.6, e está atrapalhando alguns trabalhos de desenvolvimento que estou fazendo.
Aqui estão algumas brincadeiras interativas:
$ 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...... Acabei de ler: https://github.com/pypa/virtualenv/pull/697
Acho que o tempo provavelmente é mais bem gasto abordando as causas-raiz, em vez desse sintoma específico. Dependendo de como a reescrita for, estou mais do que disposto a esperar por quaisquer alterações que precisem ocorrer para resolver esse problema, em favor das alterações discutidas na reescrita.
Comentário Original:
Acabei de ser mordido por este também.
# 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'
>>>
considere atualizar site.py
para fornecer site.getsitepackages()
Acerte este problema com #555, que pode causar um comportamento diferente em um ambiente virtual se você executar com -Werror devido ao aviso de depreciação. Como o tox depende desse pacote para funcionar internamente, não vejo muita maneira de contornar isso.
+1 sad_panda e muitas lágrimas
+1 isso me mordeu hoje, o código funciona fora do virtualenv, mas não dentro.
+1 mordida, há alguma atualização? Obrigado.
+1 mesmo problema com rk (kernel remoto para jupyter).
+1 mordida, funciona fora do virtualenv, mas não dentro.
Todos, eu acho que por enquanto a melhor solução pode ser a venda de site.py
(ou partes dele) em seus projetos.
Como solução alternativa: python -c "from distutils.sysconfig import get_python_lib; print(get_python_lib())"
consegue encontrar a localização do meu diretório de pacotes de sites Python
+1
+1 mordida, há alguma atualização? Obrigado.
estou usando virtualenv 15.0.1 no Ubuntu 16.04 64bit
+1 mordida
(virtualenv 15.1.0 no CentOS 7.5.1804)
Desde que mudei para py3, parei de usar virtualenv
e uso o próprio venv
do python. Com o python 3.6+, um venv
minimalista compreende apenas alguns links simbólicos:
$ 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
Então, chega de virtualenv
e todas as suas peculiaridades para mim. HTH outras pessoas.
@RemiCardona Eu uso venv
do Python 3 o máximo que posso, mas infelizmente tox
ainda usa virtualenv
(mesmo ao testar o Python 3), então estou com esse problema toda vez que uso tox
para automatizar testes ou fazer integração contínua. 😞
Este problema foi marcado automaticamente como obsoleto porque não teve atividade recente. Será fechado se não ocorrer mais nenhuma atividade. Basta adicionar um comentário se você quiser mantê-lo aberto. Obrigado por suas contribuições.
Comentários muito úteis
Como solução alternativa:
python -c "from distutils.sysconfig import get_python_lib; print(get_python_lib())"
consegue encontrar a localização do meu diretório de pacotes de sites Python