pysqlite instala erro no FreeBSD em virtualenv

2

Estou tentando instalar o pysqlite usando o pip sob um virtualenv no FreeBSD 7.3, com Python versão 2.6.2. Eu não tive nenhum problema para instalar outros pacotes como o Django, PIL etc. Todos eles eu instalei depois de ativar o virtualenv apenas. Mas recebo um erro enorme para pip install sqlite . Aqui está o final do erro

src/module.c:426: warning: implicit declaration of function 'sqlite3_libversion'
src/module.c:426: warning: passing argument 1 of 'PyString_FromString' makes pointer from integer without a cast
error: command 'gcc' failed with exit status 1
Command /usr/home/myuser/python-sites/virtpython/bin/python -c "import setuptools;__file__='/usr/home/myuser/python-sites/virtpython/build/pysqlite/setup.py';exec(compile(open(__file__).read().replace('\r\n', '\n'), __file__, 'exec'))" install --record /usr/tmp/pip-N3U6Px-record/install-record.txt --single-version-externally-managed --install-headers /usr/home/myuser/python-sites/virtpython/include/site/python2.6 failed with error code 1 in /usr/home/myuser/python-sites/virtpython/build/pysqlite
Exception information:
Traceback (most recent call last):
  File "/usr/home/myuser/python-sites/virtpython/lib/python2.6/site-packages/pip-1.2.1-py2.6.egg/pip/basecommand.py", line 107, in main
    status = self.run(options, args)
  File "/usr/home/myuser/python-sites/virtpython/lib/python2.6/site-packages/pip-1.2.1-py2.6.egg/pip/commands/install.py", line 261, in run
    requirement_set.install(install_options, global_options)
  File "/usr/home/myuser/python-sites/virtpython/lib/python2.6/site-packages/pip-1.2.1-py2.6.egg/pip/req.py", line 1166, in install
    requirement.install(install_options, global_options)
  File "/usr/home/myuser/python-sites/virtpython/lib/python2.6/site-packages/pip-1.2.1-py2.6.egg/pip/req.py", line 589, in install
    cwd=self.source_dir, filter_stdout=self._filter_install, show_stdout=False)
  File "/usr/home/myuser/python-sites/virtpython/lib/python2.6/site-packages/pip-1.2.1-py2.6.egg/pip/util.py", line 612, in call_subprocess
    % (command_desc, proc.returncode, cwd))
InstallationError: Command /usr/home/myuser/python-sites/virtpython/bin/python -c "import setuptools;__file__='/usr/home/myuser/python-sites/virtpython/build/pysqlite/setup.py';exec(compile(open(__file__).read().replace('\r\n', '\n'), __file__, 'exec'))" install --record /usr/tmp/pip-N3U6Px-record/install-record.txt --single-version-externally-managed --install-headers /usr/home/myuser/python-sites/virtpython/include/site/python2.6 failed with error code 1 in /usr/home/myuser/python-sites/virtpython/build/pysqlite

'virtpython' é meu virtualenv

% pkg_info | grep sqlite
sqlite-2.8.17_1     An SQL database engine in a C library
sqlite3-3.6.11      An SQL database engine in a C library

Se existe um pacote sqlite devel para o FreeBSD, onde posso encontrá-lo? Ou a questão é outra coisa?

    
por Vishnu Kumar 30.10.2012 / 17:37

4 respostas

3

Eu me deparei com um problema semelhante, e a única solução que encontrei é ir para o diretório de criação do pip (/ tmp / pip- {random hash}, geralmente pode ser encontrado no final do erro , também pode ser / usr / tmp /, ou pysqlite, depende da sua configuração) e altere o pysqlite setup.cfg. Quando baixado, é assim:

[build_ext]
#define=
#include_dirs=/usr/local/include
#library_dirs=/usr/local/lib
libraries=sqlite3
define=SQLITE_OMIT_LOAD_EXTENSION

Quando descomenteio o include_dirs e o library_dirs, o pysqlite será instalado corretamente. A desvantagem disso, é que eu ainda não encontrei uma maneira de automatizar facilmente essa etapa, então ela precisa ser feita com cada configuração virtualenv. É feio, desagradável e uma dor no rabo, mas deixa pysqlite ser instalado.

Espero que isso ajude.

PS Se você estiver tentando executar a instalação do pip em um virtualenv, os arquivos baixados provavelmente serão encontrados em {virtualenv} / build / pysqlite.

    
por 22.11.2012 / 18:58
2

Eu encontrei um problema semelhante ao tentar instalar o pysqlite em um virtualenv no Debian wheezy.

Eu encontrei este artigo:

O qual mencionou que eu poderia precisar instalar a versão dev de libsqlite3 no Debian para permitir que o pysqlite fosse instalado no virtualenv:

sudo apt-get install libsqlite3-dev

Eu tentei isso, e de repente pysqlite instalado bem no meu virtualenv.

    
por 16.05.2013 / 22:19
1

Não sei se isso responderá à sua pergunta. Isso é exatamente o que eu tentaria.

  1. Tente instalar uma versão anterior do sqlite especificando uma versão, por exemplo:

    pip install sqlite==2.7
    
  2. Tente construir o sqlite a partir de um tarball. Só para ver se o problema está na configuração do seu sistema. Se sim, é provavelmente mais fácil depurá-lo desta forma diretamente sem pip . Uma vez que isso esteja resolvido, pip também deve ser capaz de fazer isso, ou pelo menos você saberá que algo é suspeito em sua configuração de pip.

por 30.10.2012 / 19:46
0

Isso funciona bem o suficiente. Primeiro baixe e compile o sqlite na sua máquina local (não na venv.). sudo pip install sqlite deve fazer isso ironicamente. Agora adicione o abaixo ao seu ~/.pydistutils.cfg

## Exclusively here to allow pysqlite to compile in a venv.
[build_ext]
include_dirs=/usr/local/include
library_dirs=/usr/local/lib

pip dentro do venv agora compilará o pysqlite contra o / usr / local / lib. Isso pode romper o isolamento - o pysqlite depende de bibliotecas fora do ambiente. Se isso incomoda você, eu tenho medo, a melhor aposta é prisões ou LXC

    
por 15.04.2014 / 20:34