我正在尝试在我的用户目录(在我没有 sudo 权限的 ubuntu 服务器上)上安装 python 包(scikits.learn),但是我得到了
error: Python.h: No such file or directory
可能是因为我没有安装 python-dev。但是如何在不使用 sudo 的情况下安装 python-dev?或者还有其他简单的方法可以解决 Python.h 的问题吗?
答案1
您可以从源代码编译自己的 python,然后安装您想要的任何模块。 http://docs.python.org/devguide/
答案2
我知道这有点像是巫术(复活旧帖),但我遇到了同样的问题,却找不到答案,所以我分享了我找到的答案……
我的解决方案:
我正在使用 ubuntu 16.04 桌面,没有 sudo,只安装了 python 2.7。我设法设置了一个没有 sudo 的 virtualevn(以下https://stackoverflow.com/questions/9348869/how-to-install-virtualenv-without-using-sudo),当尝试安装 jupyter 时,我发现缺少“错误:Python.h:没有此文件或目录”。
我的解决方案并不干净,但至少局限于virtualenv 和虚拟 python 文件夹是:
- 创建测试目录(package_download)
- no-sudo@pc:~/package_download$ apt-get 下载 libpython2.7-dev
- no-sudo@pc:~/package_download$ apt-get 下载 python-dev
- no-sudo@pc:~/package_download$ dpkg -x libpython2.7-dev_2.7.12-1ubuntu0~16.04.1_amd64.deb 。
- no-sudo@pc:~/package_download$ dpkg -x python-dev_2.7.11-1_amd64.deb 。
这将下载库并将其提取到您的 package_download 文件夹中。现在到了棘手的部分,因为 pip 不允许我定位此位置,所以我将这些文件添加到它们所属的位置,即 virtualenv 文件夹中...
- 将“〜/ package_download / usr / bin”与你内部的 bin 目录合并虚拟 python安装文件夹(用于安装 virtualenv 和创建环境的文件夹),但不要替换任何文件。
- 将“〜/ package_download / usr / lib”与您的虚拟 python文件夹。这里没有冲突。
- 将“~/package_download/usr/include/python2.7”的内容复制到你的include/python2.7/文件夹中,这里没有冲突。这实际上是最脏的部分,因为我们正在修改虚拟 python(这不需要 sudo,因为是 no-sudo虚拟 python)。
- 将文件夹“~/package_download/usr/include/x86_64-linux-gnu”复制到您的include/python2.7/文件夹。复制文件夹这里没有问题...
现在运行你的虚拟环境:
- no-sudo@pc:~/running_virtualenv$ 源 bin/activate
- (running_virtualenv)no-sudo@pc:~/running_virtualenv$ pip install jupyter
- 享受...
如果你发现你的包括/python2.7/是一个符号链接,那么您将 virtualenv 文件夹误认为是虚拟 python 文件夹。(感谢 @andrzej1_1 发现此问题)