Como instalar manualmente um módulo pypi sem pip / easy_install?


91

Desejo usar o módulo gntp para exibir notificações semelhantes a torradeira para um software C / C ++. Quero empacotar todas as dependências do software para que seja autoexecutável em outro computador.

O módulo gntp só está disponível através do instalador do pip, que não pode ser usado (O computador que está rodando o soft não tem conexão com a internet): como faço para instalá-lo a partir dos fontes?

Eu preferiria não forçar o usuário a instalar easy_install / pip e adicionar manualmente o caminho do pip ao% PATH.

PS: Estou usando o Python 2.7 em uma máquina Windows.


4
Talvez com python setup.py install?
Nicolas

Respostas:


149
  1. Baixe o pacote
  2. descompacte-o se estiver compactado
  3. cd no diretório que contém setup.py
  4. Se houver instruções de instalação contidas na documentação aqui contida, leia e siga as instruções OUTRAS
  5. digitar python setup.py install

Você pode precisar de privilégios de administrador para a etapa 5. Portanto, o que você faz aqui depende do seu sistema operacional. Por exemplo, no Ubuntu você diriasudo python setup.py install

EDITAR - graças a kwatford (ver o primeiro comentário)

Para ignorar a necessidade de privilégios de administrador durante a etapa 5 acima, você pode usar o sinalizador --user. Desta forma, você pode instalar o pacote apenas para o usuário atual.

Os documentos dizem:

Os arquivos serão instalados em subdiretórios do site.USER_BASE (escrito como base de usuários daqui em diante). Este esquema instala módulos Python puros e módulos de extensão no mesmo local (também conhecido como site.USER_SITE). Aqui estão os valores para UNIX, incluindo Mac OS X:

Mais detalhes podem ser encontrados aqui: http://docs.python.org/2.7/install/index.html


8
pip / easy_install / setup.py geralmente aceita um --usersinalizador para instalar o pacote apenas para o usuário atual, geralmente ignorando a necessidade de acesso de administrador.
kwatford

3
Por algum motivo, vejo isso: ImportError: No module named 'setuptools'descobri que aqui: pypi.python.org/pypi/setuptools/1.1.6 Embora a instalação tenha me dado erros de exceção, agora o módulo websocket não funciona, acho que vou dar no Python 3.3 no Windows neste ponto.
SSH em

2
@SSHThis: Tenho os mesmos resultados com um pacote cuja instalação estou tentando fazer funcionar. Aumentar o detalhamento dá "Porque esta distribuição foi instalada --multi-version [...]" que é falso (apenas uma versão do python instalada aqui) e inútil (usando o documentado "python -m easy_install [...] "não ajuda em nada), estou com você - Python é inutilizável.
Eric Towers

1
Eu acho que pip install target-packagegeralmente instala / atualiza automaticamente outros pacotes dos quais o pacote de destino depende. Isso acontece no caso da abordagem setup.py? Ou o zip do pacote contém todas as dependências também? E você quer dizer que deveríamos baixar rodas python em vez de zips? Gosta desses para entorpecido? Se não for onde encontrar zips (por exemplo, para numpy)? (Estou perguntando tudo isso porque sou forçado a trabalhar por trás de proxy corporativo, onde tenho que lutar para cada download: '()
Mahesha999

3
você não pode realmente baixar pacotes enquanto está offline ... Se você quiser baixá-los enquanto estiver fora de sua rede de trabalho boba, eu provavelmente faria o seguinte: 1. criar um virtualenv. 2. python setup.py installou pip installtudo o que você precisa. 3. execute pip freeze para obter uma lista de todos os pacotes e todas as versões. Você pode armazenar isso em um arquivo (tradicionalmente chamado de requirements.txt '. Em seguida, se quiser fazer o download dos pacotes para copiá-los para diferentes máquinas que você pode usar pip download [options] -r <requirements file>. Esta não é a maneira mais eficiente. Mas fácil
Sheena

5

Para explicar melhor a resposta de Sheena , eu precisava ter as ferramentas de configuração instaladas como uma dependência de outra ferramenta, por exemplo, mais itertools .

Baixar

Clique no Clone or downloadbotão e escolha seu método. Coloquei-os em um dev/py/libsdiretório no meu diretório inicial do usuário. Não importa onde eles são salvos, porque eles não serão instalados lá.

Instalando ferramentas de configuração

Você precisará executar o seguinte dentro do diretório setup-tools .

python bootstrap.py
python setup.py install

Instalação de dependências gerais

Agora você pode navegar para o diretório mais itertools e instalá-lo normalmente.

  1. Baixe o pacote
  2. Descompacte-o se for um arquivo
  3. Navegue ( cd ...) para o diretório que contémsetup.py
  4. Se houver instruções de instalação contidas na documentação aqui contida, leia e siga as instruções OUTRAS
  5. Digitar: python setup.py install

2

Embora a resposta de Sheena faça o trabalho, pipnão pára por aí.

Da resposta de Sheena:

  1. Baixe o pacote
  2. descompacte-o se estiver compactado
  3. cd no diretório que contém setup.py
  4. Se houver instruções de instalação contidas na documentação contida neste documento, leia e siga as instruções OUTRAS
  5. digitar python setup.py install

No final disso, você terá um .eggarquivo em site-packages. Como usuário, isso não deve incomodá-lo. Você pode importe uninstallo pacote normalmente. No entanto, se quiser fazer da pipmaneira, você pode continuar as etapas a seguir.

No site-packagesdiretório,

  1. unzip <.egg file>
  2. renomeie o EGG-INFOdiretório como<pkg>-<version>.dist-info
  3. Agora você verá um diretório separado com o nome do pacote, <pkg-directory>
  4. find <pkg-directory> > <pkg>-<version>.dist-info/RECORD
  5. find <pkg>-<version>.dist-info >> <pkg>-<version>.dist-info/RECORD. O >>é para evitar a substituição.

Agora, olhando para o site-packagesdiretório, você nunca perceberá que instalou sem ele pip. Para uninstall, basta fazer o de costume pip uninstall <pkg>.


E se eu estiver instalando um pacote do repositório Anaconda e ele não tiver um setup.pyarquivo?
Confundido em
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.