Pergunta curta
- O que é a maneira correta de instalar
pip
,virtualenv
edistribute
?
fundo
Na minha resposta à pergunta 4314376 do SO , eu recomendei o uso ez_setup
para que você pudesse instalar pip
e da virtualenv
seguinte maneira:
curl -O http://peak.telecommunity.com/dist/ez_setup.py
sudo python ez_setup.py
sudo easy_install pip
sudo pip install virtualenv
Originalmente, retirei essas instruções da postagem do blog de Jesse Noller. Então, você deseja usar o Python no Mac? . Eu gosto da idéia de manter um diretório global de pacotes de sites limpo, então os únicos outros pacotes que eu instalo são virtualenvwrapper
e distribute
. (Eu adicionei recentemente distribute
à minha caixa de ferramentas por causa deste anúncio de serviço público do Python . Para instalar esses dois pacotes, usei:
sudo pip install virtualenvwrapper
curl -O http://python-distribute.org/distribute_setup.py
sudo python distribute_setup.py
Não há mais ferramentas de instalação e easy_install
Para realmente seguir esse anúncio de serviço público do Python , em uma nova instalação do Python, eu faria o seguinte:
curl -O http://python-distribute.org/distribute_setup.py
sudo python distribute_setup.py
sudo easy_install pip
sudo pip install virtualenv
sudo pip install virtualenvwrapper
Repreensão de Glyph
Em um comentário à minha resposta à pergunta 4314376 do SO, o usuário do SO Glyph declarou:
NÃO. NUNCA faça
sudo python setup.py install
o que for. Escreva um ~ / .pydistutils.cfg que coloque sua instalação do pip em ~ / .local ou algo assim. Especialmente os arquivos nomeadosez_setup.py
tendem a absorver versões mais recentes de coisas como setuptools e easy_install, que podem quebrar outras coisas no sistema operacional.
Voltar à pergunta curta
Portanto, a resposta de Glyph me leva à minha pergunta original:
- O que é a maneira correta de instalar
pip
,virtualenv
edistribute
?
fonte
python distribute_setup.py
seguido deeasy_install pip
evirtualenv --distribute venv
? (consulte python-guide.readthedocs.org/en/latest/starting/install/… ) e, em caso afirmativo, por quê?sudo apt-get install python-{pip,virtualenv}
???pip
,virtualenv
e, o Python PSA.http://python-distribute.org/distribute_setup.py
redireciona para 404 :(Respostas:
Você pode fazer isso sem instalar nada no próprio python.
Você não precisa de sudo ou privilégios.
Você não precisa editar nenhum arquivo.
Instale o virtualenv em um ambiente virtual de inicialização. Use o ambiente virtual para criar mais. Como o virtualenv é enviado com pip e distribuir, você obtém tudo de uma instalação.
Aqui está um exemplo no bash:
Agora você pode usar o ambiente "bootstrap" para criar mais:
Enlouquecer!
Nota
Isso pressupõe que você não está usando uma versão muito antiga do virtualenv. Versões antigas exigiam os sinalizadores
--no-site-packges
(e dependendo da versão do Python--distribute
). Agora você pode criar seu ambiente de inicialização com apenaspython virtualenv.py path-to-bootstrap
oupython3 virtualenv.py path-to-bootstrap
.fonte
python virtualenv.py TARGET_DIRECTORY
faz a mesma coisa.virtualenv
não precisa das opções '--no-site-packages --distribute'. O oposto--system-site-packages
pode ser necessáriacurl -Lo virtualenv-tmp.tar.gz 'https://github.com/pypa/virtualenv/tarball/master'
virtualenvwrapper
? Os documentos alertam especificamente para não instalá-lo em um virtualenv (embora pareça funcionar ).Eu acho que Glyph significa fazer algo assim:
~/.local
, se ele ainda não existir.~/.bashrc
, verifique se~/.local/bin
está emPATH
e que~/.local
está emPYTHONPATH
.Crie um arquivo
~/.pydistutils.cfg
que contenhaÉ um arquivo no formato ConfigParser padrão.
Baixe
distribute_setup.py
e executepython distribute_setup.py
(nãosudo
). Se ele reclamar de umsite-packages
diretório inexistente , crie-o manualmente:mkdir -p ~ / .local / lib / python2.7 / site-packages /
Execute
which easy_install
para verificar se é proveniente de~/.local/bin
pip install virtualenv
pip install virtualenvwrapper
~/.virtualenvs
Em
~/.bashrc
adiçãoÉ isso aí, não há uso de
sudo
todo e seu ambiente Python está~/.local
completamente separado do Python do sistema operacional. Isenção de responsabilidade: Não tenho certeza da compatibilidadevirtualenvwrapper
deste cenário - não pude testá-lo no meu sistema :-)fonte
easy_install pip
entre as etapas 5 e 6.Se você seguir as etapas recomendadas em vários tutoriais que eu vinculei nesta resposta , poderá obter o efeito desejado sem as etapas "manuais" um tanto complicadas das respostas de Walker e Vinay. Se você estiver no Ubuntu:
O equivalente é alcançado no OS X usando o homebrew para instalar o python (mais detalhes aqui ).
Com o
pip
instalado, você pode usá-lo para obter os pacotes restantes (você pode omitirsudo
no OS X, ao usar a instalação python local).(esses são os únicos pacotes que você precisa instalar globalmente e duvido que entrem em conflito com qualquer nível de sistema do sistema operacional. Se você quiser ser super seguro, poderá manter as versões da distribuição
sudo apt-get install virtualenvwrapper
)Nota: no Ubuntu 14.04, recebo alguns erros com a instalação do pip , então uso
pip3 install virtualenv virtualenvwrapper
e adicionoVIRTUALENVWRAPPER_PYTHON=/usr/bin/python3
ao meu.bashrc/.zshrc
arquivo.Você então anexa ao seu
.bashrc
arquivoe fonte
É basicamente isso. Agora, a única decisão é se você deseja criar um virtualenv para incluir pacotes no nível do sistema
onde os pacotes de sistema existentes não precisam ser reinstalados, eles são vinculados às versões do interpretador do sistema. Nota: você ainda pode instalar novos pacotes e atualizar os pacotes incluídos do sistema existentes sem o sudo - eu testei e funciona sem interrupções do interpretador do sistema.
A alternativa, se você deseja um ambiente completamente separado, é
ou considerando que essa é a opção padrão, basta
O resultado é que você tem um novo virtualenv, onde você pode instalar seus pacotes favoritos de maneira livre e sem sujeira
fonte
export WORKON_HOME="$HOME/.virtualenvs"
?brew install python
puxa pip + setuptools). Essa abordagem funciona bem para mim. Além disso, o foco no pip parece ser o caminho futuro também no pacote Python.WORKON_HOME
o padrão é~/.virtualenvs
sim. Há uma linha/usr/local/bin/virtualenvwrapper.sh
nesses conjuntosworkon_home_dir="$HOME/.virtualenvs"
if [ "$workon_home_dir" = "" ]
.pip install virtualenv virtualenv-wrapper
linha compip install --upgrade distribute
o virtualenv ativado em que eu instalei o pyopencl. Também adicioneiexport PROJECT_HOME="$HOME/src"
ao meu bashrc para ativar amkproject
ferramenta venv legal .Python 3.4 em diante
O Python 3.3 adiciona o módulo venv e o Python 3.4 adiciona o módulo surepip . Isso torna o pip de bootstrapping tão fácil quanto:
Talvez precedido por uma chamada
venv
para fazê-lo dentro de um ambiente virtual.O pip garantido é descrito na PEP 453 .
fonte
No Ubuntu:
sudo apt-get install python-virtualenv
O pacote
python-pip
é uma dependência e, portanto, será instalado também.fonte
pip
, de preferência em umvirtualenv
, e não usarsudo
para qualquer umpip
às vezes, têm bugs significativos, então muitas vezes acabo usando oget-pip.py
fornecido no python.org.Eu fiz esse procedimento para usarmos no trabalho.
Pontos principais para a segurança:
fonte
Atualização: em julho de 2013, este projeto não é mais mantido. O autor sugere o uso de pyenv . (O pyenv não possui suporte interno para o virtualenv, mas funciona bem com ele.)
Pythonbrew é um gerenciador de versões para python e vem com suporte para virtualenv.
Depois de instalar pythonbrew e uma versão python usando venvs, é realmente fácil:
fonte
pyenv
, que funciona bem.Não há nenhum problema para instalar o sudo python setup.py, se você tem certeza que é o que deseja fazer.
A diferença é que ele usará o diretório de pacotes de sites do seu sistema operacional como destino para os arquivos .py serem copiados.
então, se você quiser que o pip seja acessível de maneira ampla, esse provavelmente é o caminho a percorrer. Não digo que os outros sejam ruins, mas isso provavelmente é justo o suficiente.
fonte
pip freeze
me deixou quase congelada - a lista de pacotes, sendo instalado em todo o sistema, era muito longo. Desde então, recomendo usar a instalação do pacote python "no sudo" e "no os-wide".Instale o ActivePython . Inclui pip, virtualenv e Distribute.
fonte
Me deparei com o mesmo problema recentemente. Estou me tornando mais parcial com a mentalidade "sempre use um virtualenv", então meu problema era instalar o virtualenv com pip sem instalar a distribuição no meu diretório de pacotes de sites global ou de usuário. Para fazer isso, baixei manualmente distribuir, pip e virtualenv e, para cada um, executei “python setup.py install --prefix ~ / .local / python-private” (com uma configuração temporária de PYTHONPATH = ~ / .local / python-private) para que os scripts de instalação encontrem a distribuição). Mudei o script virtualenv para outro diretório que tenho no meu PATH e o editei para que os módulos de distribuição e virtualenv possam ser encontrados no sys.path. Tada: Eu não instalei nada em / usr, / usr / local ou em meu diretório de pacotes de sites de usuários, mas posso executar o virtualenv em qualquer lugar e nesse virtualenv recebo o pip.
fonte
Eu tive vários problemas (veja abaixo) ao instalar módulos SSL atualizados, mesmo dentro de uma virtualenv, sobre as versões mais antigas do Python fornecidas pelo sistema operacional, então agora uso
pyenv
.O pyenv facilita muito a instalação de novas versões do Python e suporta virtualenvs. Começar é muito mais fácil do que as receitas para virtualenv listadas em outras respostas:
brew install pyenv
e no Linux, use pyenv-installerIsso funciona muito bem para isolar a versão "new Python" e o virtualenv do sistema Python. Como você pode usar facilmente um Python mais recente (pós 2.7.9), os módulos SSL já estão atualizados e, é claro, como qualquer configuração moderna de virtualvv isolada dos módulos do sistema Python.
Alguns bons tutoriais:
pyenv global 3.6.1
(global para o usuário atual) oupyenv local 2.7.13
(local para o diretório atual).O
pyenv-virtualenv
plugin agora está embutido no tipopyenv commands | grep virtualenv
a ser verificado. Eu não usaria o plug-in pyenv-virtualenvwrapper para começar - veja como você se familiariza com o pyenv-virtualenv, que é mais integrado ao pyenv, pois isso cobre a maior parte do que o virtualenvwrapper faz.pyenv
é modeladorbenv
(uma boa ferramenta para alternar versão Ruby) e sua única dependência é bash.pyvenv
- isso é um equivalente do virtualenv que faz parte das versões recentes do Python 3 e não lida com a troca de versão do PythonRessalvas
Dois avisos sobre pyenv:
dash
, o que é/bin/sh
no Ubuntu ou Debian.bash --login
usando um terminal), o que nem sempre é fácil de obter com ferramentas de automação como o Ansible .Portanto, o pyenv é melhor para uso interativo e menos bom para servidores de script.
Problemas do módulo SSL
Uma razão para usar
pyenv
é que geralmente há problemas com a atualização dos módulos SSL do Python ao usar versões mais antigas do Python fornecidas pelo sistema:fonte
Você pode fazer isso sem instalar nada no próprio python.
Você não precisa de sudo ou privilégios.
Você não precisa encontrar a versão mais recente de um
virtualenv
arquivo tarVocê não precisa editar as informações da versão em um script bash para manter as coisas atualizadas.
Você não precisa
curl
/wget
outar
instalou, nempip
oueasy_install
isso funciona tanto para 2.7 quanto para 3.X
Salve o seguinte em
/tmp/initvenv.py
:de importação futura print_function
e use-o como
por exemplo (se você realmente precisa da
distribute
camada de compatibilidadesetuptools
)Observe que, com versões mais antigas de python, isso pode lhe dar um
InsecurePlatformWarning
retorno.Depois de ter seu virtualenv (nome, por exemplo
venv
), você pode configurar outro virtualenv usando ovirtualenv
recém-instalado:virtualenvwrapper
Eu recomendo dar uma olhada no virtualenvwrapper também, depois de uma instalação única:
e ativação (pode ser feita a partir do seu script de login):
você pode fazer coisas como:
¹ Não encontrei uma maneira de suprimir o aviso. Poderia ser resolvido dentro
pip
e / ourequest
, mas os desenvolvedores apontam um para o outro como a causa. Recebi a recomendação, muitas vezes não realista, de atualizar a versão python que estava usando para a versão mais recente. Estou certo de que isso poderia quebrar, por exemplo, minha instalação do Linux Mint 17. Felizmente,pip
armazena em cache os pacotes; portanto, o Aviso é feito apenas uma vez por instalação de pacote.fonte
InsecurePlatformWarning
(ou seja, se o Python for mais antigo que a versão 2.7.9) pode ser corrigido instalando pacotes adicionais pyopenssl, pyasn1, ndg-httpsclient a partir do PyPI. (É compatível com SSL, certificados de decodificação, https via PyOpenSSL.) Sem os protocolos corretos, não é realmente seguro o suficiente para baixar e executar qualquer código.Há boas instruções no site oficial do Virtualenv. https://pypi.python.org/pypi/virtualenv
Basicamente, o que eu fiz foi instalar
pip
esudo easy_install pip
, em seguida, useisudo pip install virtualenv
e criei um ambiente com:virtualenv my_env
(nomeie o que você deseja), seguindo o que eu fizvirtualenv --distribute my_env
:; que instaloudistribute
epip
no meu virtualenv.Mais uma vez, siga as instruções na
virtualenv
página.Uma espécie de aborrecimento, proveniente de Ruby; P
fonte
Aqui está uma boa maneira de instalar o virtualenvwrapper (atualização disso ).
Faça o download do virtualenv-1.11.4 (você pode encontrar as mais recentes aqui ), descompacte-o, abra
terminal
É isso, agora você pode usar
mkvirtualenv env1
,lsvirtualenv
..etcNota: você pode excluir
virtualenv-1.11.4
evirtualenv-1.11.4.zip
das pastas Downloads.fonte
A boa notícia é que se você instalou o python3.4, o pyvenv já está instalado. Então apenas
Agora, neste ambiente virtual, você pode usar o pip para instalar módulos para este projeto.
Deixe esse ambiente virtual, apenas
fonte