操作系统:linux(ubuntu 16.04 LTS,64位)python_version:3.6.3
- 使用虚拟环境。
- 我尝试安装许多版本的 kivy 和许多不同版本的 cython,但总是出现相同的错误,如下所示。
- 在输入“pip install kivy”后,将安装一些软件包:certifi(2017.11.5)chardet(3.0.4)Cython(0.26)docutils(0.14)idna(2.6)Kivy-Garden(0.1.4)pip(9.0.1)Pygments(2.2.0)requests(2.18.4)setuptools(38.4.0)urllib3(1.22)wheel(0.30.0)
x86_64-linux-gnu-gcc -pthread -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototypes -g -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -fPIC -I/tmp/pip-build-c8ofsvs6/kivy/kivy/include -I/usr/include/python3.6m -I/home/ubuntu/venv/include/python3.6m -c /tmp/pip-build-c8ofsvs6/kivy/kivy/_event.c -o
build/temp.linux-x86_64-3.6/tmp/pip-build-c8ofsvs6/kivy/kivy/_event.o /tmp/pip-build-c8ofsvs6/kivy/kivy/_event.c:4:20:致命错误:Python.h:没有这样的文件或目录编译终止。错误:命令'x86_64-linux-gnu-gcc'失败,退出状态为 1
---------------------------------------- Failed building wheel for kivy Running setup.py clean for kivy Failed to build kivy Installing collected packages: kivy Running setup.py install for kivy ... error Complete output from command /home/ubuntu/venv/bin/python3 -u -c "import setuptools, tokenize;__file__='/tmp/pip-build-c8ofsvs6/kivy/setup.py';f=getattr(tokenize,
'打开',打开)(文件);code=f.read().replace('\r\n', '\n');f.close();exec(compile(code,文件, 'exec'))” install --record /tmp/pip-vcdy_iv_-record/install-record.txt --single-version-externally-managed --compile --install-headers /home/ubuntu/venv/include/site/python3.6/kivy: 使用 distutils
最后
> > Detected compiler is unix
> > skipping '/tmp/pip-build-c8ofsvs6/kivy/kivy/_event.c' Cython extension (up-to-date)
> > building 'kivy._event' extension
> > creating build/temp.linux-x86_64-3.6
> > creating build/temp.linux-x86_64-3.6/tmp
> > creating build/temp.linux-x86_64-3.6/tmp/pip-build-c8ofsvs6
> > creating build/temp.linux-x86_64-3.6/tmp/pip-build-c8ofsvs6/kivy
> > creating build/temp.linux-x86_64-3.6/tmp/pip-build-c8ofsvs6/kivy/kivy
> > x86_64-linux-gnu-gcc -pthread -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototypes -g -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -fPIC -I/tmp/pip-build-c8ofsvs6/kivy/kivy/include -I/usr/include/python3.6m -I/home/ubuntu/venv/include/python3.6m -c /tmp/pip-build-c8ofsvs6/kivy/kivy/_event.c -o
> > build/temp.linux-x86_64-3.6/tmp/pip-build-c8ofsvs6/kivy/kivy/_event.o
> > /tmp/pip-build-c8ofsvs6/kivy/kivy/_event.c:4:20: fatal error: Python.h: No such file or directory
> > compilation terminated.
> > error: command 'x86_64-linux-gnu-gcc' failed with exit status 1
> >
> > ---------------------------------------- Command "/home/ubuntu/venv/bin/python3 -u -c "import setuptools,
> > tokenize;__file__='/tmp/pip-build-c8ofsvs6/kivy/setup.py';f=getattr(tokenize,
> > 'open', open)(__file__);code=f.read().replace('\r\n',
> > '\n');f.close();exec(compile(code, __file__, 'exec'))" install
> > --record /tmp/pip-vcdy_iv_-record/install-record.txt --single-version-externally-managed --compile --install-headers /home/ubuntu/venv/include/site/python3.6/kivy" failed with error code
> > 1 in /tmp/pip-build-c8ofsvs6/kivy/
- 我也尝试过 cython 0.25.2
答案1
好的,现在我找到了这个问题。这是因为 pip 缓存包安装时,我的 cython 和 kivy 缓存中的包损坏了,因此每次 pip 都会使用已经损坏的缓存,而不是下载新的包。现在这些包是如何因为切换 python 默认版本而损坏的,sudo update-alternatives --config python3
我在这里将 python3.6 设置为默认值并下载了所有包,但 ubuntu 的一些内部工作(不知道)并不真正支持 python3.6,它支持 python3.5,因此下载包 currept 并进入缓存,当我切换到 python3.5 时,ubuntu 工作得很好,但包已经损坏了。
答案2
除了 pip,还可以尝试 apt:
sudo add-apt-repository ppa:kivy-team/kivy
sudo apt-get update
sudo apt-get install python-kivy # or python3-kivy if you're using python3
答案3
尝试安装pip install cython==0.25.0
然后安装所有要求Kivy 官方安装说明。
您可能可以使用的较新版本
cython
,但上次我尝试使用时cython 0.26
,kivy 1.10
不得不降级cython
。