[解決済み] setup.py install で --user と --prefix の組み合わせでエラーになる。
質問
私は最近アクセスしたシステムに Python パッケージをインストールしようとしていました。私は、Python の比較的新しい
per user site-packages ディレクトリ
という新しいオプションと
--user
. (このオプションは
現在では文書化されていない
しかし、Python 2.6 以降では存在します。
python setup.py install --help
.)
を実行してみたところ
python setup.py install --user
をダウンロードすると、必ず次のようなエラーが発生しました。
error: can't combine user with with prefix/exec_prefix/home or install_(plat)base
このエラーは非常に不可解でした。なぜなら、ご覧の通り、私は
--prefix
,
--exec-prefix
,
--install-base
または
--install-platbase
というフラグをコマンドラインオプションで指定します。私はこの問題が何であるかを理解するために多くの時間を浪費しました。以下に私の答えを書きます。
ヤクの髭剃り
.
どのように解決するのですか?
1 回の回避策です。
pip install --user --install-option="--prefix=" <package_name>
または
python setup.py install --user --prefix=
の後にはテキストがない(空白でさえない)ことに注意してください。
=
.
行う
ではなく
を忘れてはいけません。
--user
のフラグを忘れてはいけません。
複数パッケージのインストール
作成
~/.pydistutils.cfg
(またはあなたのOS/プラットフォームに相当するもの)を以下の内容で作成してください。
[install]
prefix=
の後にはテキストがない(空白でさえない)ことに注意してください。
=
.
次に、必要な
pip install --user
または
python setup.py install --user
コマンドを使用します。行う
ではなく
を忘れてはいけません。
--user
のフラグを忘れてはいけません。
最後に、このファイルを削除するか名前を変更します。このファイルを残したままにしておくと、Python パッケージをシステム全体にインストールするときに問題が発生します (つまり、Python パッケージに
--user
がない場合) 問題になります。
~/.pydistutils.cfg
.
この問題の原因
これは OpenSUSE と RedHat の両方で発生する問題のようで、その結果 virtualenv のバグ のバグにつながりました。
このエラーの原因は、システムレベルの
distutils 設定ファイル
(私の場合は
/usr/lib64/python2.6/distutils/distutils.cfg
) には、次のようなものがありました。
[install]
prefix=/usr/local
基本的に、これはインストールコマンドを常に
install --prefix=/usr/local
. この仕様は、上記のいずれかの手法で上書きする必要があります。
関連
-
[解決済み】django インポートエラー - core.managementという名前のモジュールがない
-
[解決済み】pip install mysql-python は EnvironmentError: mysql_config not found で失敗します。
-
[解決済み] Androidのエラーです。デバイス*に*.apkをインストールできませんでした: タイムアウト
-
[解決済み] Python setup.py develop vs install
-
[解決済み] [Solved] .whlファイル付きのPythonパッケージをインストールする方法は?
-
[解決済み】setup.pyで非Pythonファイルをインクルードする。
-
[解決済み】Python pip install fails: invalid command egg_info
-
[解決済み] SQLAlchemy: 日付フィールドをフィルタリングする方法は?
-
[解決済み] djangoのQueryDictをPythonのDictに変更するには?
-
[解決済み] Pythonの辞書にあるスレッドセーフについて
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】python setup.pyのアンインストール
-
[解決済み] 2つの線分が交差しているかどうかを確認するにはどうすればよいですか?
-
[解決済み] Pythonでコード行間にかかる時間を測定するには?
-
[解決済み] django.db.migrations.exceptions.InconsistentMigrationHistory
-
[解決済み] 辞書のキーと値を交換するにはどうすればよいですか?
-
[解決済み] PyQtアプリケーションのスレッド化。QtスレッドとPythonスレッドのどちらを使うか?
-
[解決済み] Pythonの検索パスを他のソースに展開する
-
[解決済み] Pythonでファイルの読み込みと上書きをする
-
[解決済み] Pythonでランダムなファイル名を生成する最良の方法
-
[解決済み] Pythonでリストが空かどうかをチェックする方法は?重複