FreeBSD 7.3, Python 버전 2.6.2의 virtualenv에서 pip를 사용하여 pysqlite를 설치하려고 합니다. Django, PIL 등과 같은 다른 패키지를 설치하는 데 아무런 문제가 없었습니다. 이 모든 패키지는 virtualenv를 활성화한 후 제가 설치했습니다. 하지만 큰 오류가 발생합니다 pip install sqlite
. 이건 잘못된 꼬리야
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'은 나의 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
FreeBSD sqlite 개발 패키지가 있는 경우 어디서 찾을 수 있나요? 아니면 다른 문제가 있는 걸까요? ?
답변1
비슷한 문제가 있었고 내가 찾은 유일한 해결책은 pip 빌드 디렉터리(/tmp/pip-{random hash})로 이동하는 것이었습니다. 일반적으로 오류 끝 부분에 있는 /usr/tmp/ 또는 pysqlite라는 이름을 사용합니다. 설정에서) pysqlite setup.cfg를 변경하세요. 다운로드하면 다음과 같이 표시됩니다.
[build_ext]
#define=
#include_dirs=/usr/local/include
#library_dirs=/usr/local/lib
libraries=sqlite3
define=SQLITE_OMIT_LOAD_EXTENSION
include_dirs 및 library_dirs의 주석 처리를 제거하면 pysqlite가 제대로 설치됩니다. 단점은 이 단계를 쉽게 자동화할 수 있는 방법을 찾지 못했기 때문에 각 virtualenv를 설정할 때 이 작업을 수행해야 한다는 것입니다. 추악하고 불쾌하며 고통스럽지만 pysqlite를 설치합니다.
도움이 되었기를 바랍니다.
PS virtualenv에서 pip install을 실행하려고 하면 다운로드한 파일이 {virtualenv}/build/pysqlite에서 찾을 수 있습니다.
답변2
Debian wheezy의 virtualenv에 pysqlite를 설치하려고 할 때 비슷한 문제가 발생했습니다.
다음 기사를 찾았습니다.
libsqlite3
pysqlite를 virtualenv에 설치하려면 Debian에 dev 버전을 설치해야 할 수도 있다고 언급되어 있습니다 .
sudo apt-get install libsqlite3-dev
나는 이것을 시도했고 갑자기 pysqlite가 내 virtualenv에 잘 설치되었습니다.
답변3
이것이 귀하의 질문에 대한 답변인지 모르겠습니다. 이것이 바로 제가 시도해보고 싶었던 것입니다.
다음과 같이 버전을 지정하여 이전 버전의 sqlite를 설치해 보세요.
pip install sqlite==2.7
노력하다tarball에서 sqlite를 빌드합니다. 시스템 설정에 문제가 있는지 확인하세요. 그렇다면
pip
.pip
답변4
이 정도면 충분합니다. 먼저 sqlite를 로컬 컴퓨터(가상 머신 아님)에 다운로드하고 컴파일하세요. sudo pip install sqlite
이것은 냉소적으로 이루어져야합니다. 이제 다음을 추가하십시오.~/.pydistutils.cfg
## Exclusively here to allow pysqlite to compile in a venv.
[build_ext]
include_dirs=/usr/local/include
library_dirs=/usr/local/lib
venv 내의 pip는 이제 /usr/local/lib에 대해 pysqlite를 컴파일합니다. 이것가능한격리 중단 - pysqlite는 venv 외부의 라이브러리에 의존합니다. 이것이 당신을 괴롭히신다면 최선의 선택은 감옥이나 LXC입니다.