私は自分のユーザーディレクトリ(sudo権限のないUbuntuサーバー上)にPythonパッケージ(scikits.learn)をインストールしようとしていますが、
error: Python.h: No such file or directory
python-dev がインストールされていないからかもしれません。しかし、sudo なしで python-dev をインストールするにはどうすればいいでしょうか? または、Python.h の他の簡単な方法はありますか?
答え1
ソースから独自の Python をコンパイルし、必要なモジュールをインストールできます。 python のドキュメント
答え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をダウンロード
- sudo なしで pc:~/package_download$ dpkg -x libpython2.7-dev_2.7.12-1ubuntu0~16.04.1_amd64.deb を実行します。
- sudo なしで pc:~/package_download$ dpkg -x python-dev_2.7.11-1_amd64.deb を実行します。
これにより、ライブラリがダウンロードされ、package_download フォルダーに抽出されます。ここで面倒な部分になりますが、pip ではこの場所をターゲットにできなかったため、これらのファイルを、virtualenv フォルダー内の適切な場所に追加しました...
- 「~/package_download/usr/bin」を、仮想Pythonインストール フォルダー (virtualenv をインストールして環境を作成するために使用したフォルダー) に移動しますが、ファイルは置き換えないでください。
- 「~/package_download/usr/lib」を、仮想Pythonフォルダー。ここでは競合はありません。
- 「~/package_download/usr/include/python2.7」の内容をinclude/python2.7/フォルダにコピーします。ここでは競合は発生しません。これは実際には最も厄介な部分です。なぜなら、仮想Python(これはsudoを必要としません。なぜなら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 に感謝します)