Pip: --targetを--editableとともに使用すると、「内部」エラーが発生します

作成日 2012年06月03日  ·  22コメント  ·  ソース: pypa/pip

--editableを同時に使用する場合、 --targetはサポートされていないようです。 それが機能しているといいでしょう。 一方、より良い診断があるはずです

c:\>pip install -t z:\1 -e git+https://github.com/kennethreitz/requests.git#egg=requests
結果は

Obtaining requests from git+https://github.com/kennethreitz/requests.git#egg=requests
  Updating c:\python\virtualenv\test\src\requests clone
  Running setup.py egg_info for package requests

Downloading/unpacking certifi>=0.0.7 (from requests)
  Running setup.py egg_info for package certifi

Downloading/unpacking oauthlib>=0.1.0,<0.2.0 (from requests)
  Running setup.py egg_info for package oauthlib

Downloading/unpacking chardet>=1.0.0 (from requests)
  Running setup.py egg_info for package chardet

Downloading/unpacking rsa (from oauthlib>=0.1.0,<0.2.0->requests)
  Running setup.py egg_info for package rsa

    warning: no files found matching 'README'
Downloading/unpacking pyasn1>=0.0.13 (from rsa->oauthlib>=0.1.0,<0.2.0->requests)
  Running setup.py egg_info for package pyasn1

Installing collected packages: requests, certifi, oauthlib, chardet, rsa, pyasn1
  Running setup.py develop for requests
    usage: -c [global_opts] cmd1 [cmd1_opts] [cmd2 [cmd2_opts] ...]
       or: -c --help [cmd1 cmd2 ...]
       or: -c --help-commands
       or: -c cmd --help

    error: option --home not recognized
    Complete output from command c:\python\virtualenv\test\Scripts\python.exe -c "import setuptools; __file__='c:\\python\\virtualenv\\test\\src\\requests\\setup.py'; exec(compile(open(__file__).read().replace('\r\n', '\n'), __file__, 'exec'))" develop --no-deps --home=c:\users\piotr\appdata\local\temp\tmp3abskl:
    usage: -c [global_opts] cmd1 [cmd1_opts] [cmd2 [cmd2_opts] ...]

   or: -c --help [cmd1 cmd2 ...]

   or: -c --help-commands

   or: -c cmd --help



error: option --home not recognized

----------------------------------------
Command c:\python\virtualenv\test\Scripts\python.exe -c "import setuptools; __file__='c:\\python\\virtualenv\\test\\src\\requests\\setup.py'; exec(compile(open(__file__).read().replace('\r\n', '\n'), __file__, 'exec'))" develop --no-deps --home=c:\users\piotr\appdata\local\temp\tmp3abskl failed with error code 1 in c:\python\virtualenv\test\src\requests
Storing complete log in C:\Users\Piotr\AppData\Roaming\pip\pip.log
editable target auto-locked bug

最も参考になるコメント

これは、依存関係をアプリルートのディレクトリにインストールする必要があるが、QAプロセスの一部としてローカルチェックアウトに編集可能な依存関係をデプロイする必要があるGoogleAppengine開発者にとっての問題であることを付け加えておきます。 現状では、編集者は手動でシンボリックリンクする必要があり、面倒です。

全てのコメント22件

pip install -t dir -e git+git://github.com/shazow/urllib3.git@f088037#egg=urllib3でもこのエラーが発生します。

私も今このエラーに遭遇しました。
これは、 --target--editableを組み合わせると、どのパッケージでも発生するようです。
pipはsetup.py develop --home ...呼び出しますが、 --homesetup.py installのみ適用できます。

したがって、最終的に、 --target代わりに編集可能なパッケージで--srcオプションを使用すると、私が望むことを実行できることがわかりました。

--editableが指定されている場合、 --target--srcと同じ効果を持つはずです。そうでない場合は、ユーザーにエラーメッセージが表示され、ユーザーに--srcが表示される可能性があります。 。

--editableが指定されている場合、-targetは--srcと同じ効果を持つはずです。

IMOの予想される動作は、 targetディレクトリにeasy_install.pthを作成/更新します。

私はちょうど同じ問題を経験しました。 @jezdezによって提案されているように、次のようにすることでこれを回避できます(--editableを使用せずに):

git+ssh://[email protected]/some-user/some-repo.git#egg=Foo

私はここで同様の問題を自分で見ています:

Cleaning up...
Exception:
Traceback (most recent call last):
  File "/efs/dev/bti/pip/1.3.1-build001/install/exec/2.7/lib/python/pip-1.3.1-py2.7.egg/pip/basecommand.py", line 139, in main
  status = self.run(options, args)
  File "/efs/dev/bti/pip/1.3.1-build001/install/exec/2.7/lib/python/pip-1.3.1-py2.7.egg/pip/commands/install.py", line 291, in run
    for item in os.listdir(lib_dir):
OSError: [Errno 2] No such file or directory: '/tmp/tmppjdGHI/lib/python'

pip / commands /install.pyの290行目は次のとおりです。

     lib_dir = home_lib(temp_target_dir)

私が追跡できることから、pipはpip / req.py行1194でこのパスをすでにクリーンアップしており、一時的なソースを削除しています。

     requirement.remove_temporary_source()

そのクリーンアップをそのままにしておくことができますが、インストールを続行できるように、existsまたはtryブロックでラップします。 誰かがそれを問題として見ていますか?

@timalibディレクトリでも同じ問題が発生しました。 Pip HEADはおそらくこれを修正しましたが、少なくともCentOSでは問題が解決しません。 この特定のケースでは、libディレクトリの代わりにlib64ディレクトリがあります。

--targetを使用しても同じ問題が発生します(ただし、 --editableは使用しません)。

これが私のトレースバックです—

Exception:
Traceback (most recent call last):
  File "/Users/beaum/homebrew/Cellar/python/2.7.5/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/pip-1.3.1-py2.7.egg/pip/basecommand.py", line 139, in main
    status = self.run(options, args)
  File "/Users/beaum/homebrew/Cellar/python/2.7.5/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/pip-1.3.1-py2.7.egg/pip/commands/install.py", line 294, in run
    for item in os.listdir(lib_dir):
OSError: [Errno 2] No such file or directory: '/var/folders/00/1hyxr000h01000cxqpysvccm0063vq/T/tmpc_E_Bl/lib/python'

+1、

 PyYAML-3.10.tar.gz(241kB)のダウンロード:241kBをダウンロード
 パッケージpyyamlのsetup.pyegg_infoを実行しています
 'ext / _yaml.c' Cython拡張機能をスキップします(最新)
収集したパッケージのインストール:krcore、sympy、pyparsing、pyyaml
 krcore用にsetup.py開発を実行しています
 使用法:-c [global_opts] cmd1 [cmd1_opts] [cmd2 [cmd2_opts] ...]
 または:-c --help [cmd1 cmd2 ...]
 または:-c --help-commands
 または:-c cmd --help
 エラー:オプション--homeが認識されません
 コマンド/ usr / bin / python -c "import setuptools; __file __ = '/ tmp / krapp / src / krcore / setup.py'; exec(compile(open(__ file __)。read()。replace( '\ r \ n '、' \ n ')、__ file__、' exec ')) "develop --no-deps --home = / tmp / tmpvKaRYp:
 使用法:-c [global_opts] cmd1 [cmd1_opts] [cmd2 [cmd2_opts] ...]
 または:-c --help [cmd1 cmd2 ...]
 または:-c --help-commands
 または:-c cmd --help
エラー:オプション--homeが認識されません
 ----------------------------------------
清掃...
コマンド/ usr / bin / python -c "import setuptools; __file __ = '/ tmp / krapp / src / krcore / setup.py'; exec(compile(open(__ file __)。read()。replace( '\ r \ n '、' \ n ')、__ file__、' exec ')) "develop --no-deps --home = / tmp / tmpvKaRYpが/ tmp / krapp / src / krcoreのエラーコード1で失敗しました

--targetを-r(-requirements)とともに使用すると、「エラー:オプション--homeが認識されません」というメッセージが表示されます。

:+1:

@YorickPeterse@jezdezの回避策に従うと、次のます
エラー:homeまたはprefix / exec-prefixのいずれかを指定する必要があります-両方ではありません

--editableオプションと--targetオプションは連携しません

私は同じ問題にぶつかっています...
pipを使用してPythonパッケージをカスタムの場所(virtualenvではない)にインストールしようとしていますが、編集可能にするためにそれらの1つ(作業中のもの)が必要です。

これはおそらくhttps://github.com/pypa/setuptools/issues/392に関連してい

また、1つのpipコマンドでsetup.py develop (編集可能なpkgの場合)とsetup.py install (依存関係)の両方をトリガーできるため、私が考えることができる唯一の(非常に醜い)回避策は2つのコマンドを発行することです。

  • --no-depsパッケージ用に1つ
  • 1つは依存関係専用です(ここでは簡単な方法はありません...)

--editableが渡されるかどうかに関係なく、他のpipコマンドラインオプションを変更する必要がなければ、はるかにクリーンになります。
したがって、これを機能させるには2つの方法があると思います。

  • setuptoolsが--homeサポートするようにします。 https://github.com/pypa/setuptools/issues/392を修正し
  • pip abstract setuptoolsの詳細を持ち、 setup.py developまたはsetup.py installどちらを呼び出すかによって、 --target動作を異なる方法で実装します。 多分もっと簡単?

pip abstract setuptoolsの詳細を持ち、 setup.py developまたはsetup.py installどちらを呼び出すかによって、 --target動作を異なる方法で実装します。 多分もっと簡単?

このオプションの最大の難点は、pipがビルドシステム(setuptools)の詳細を抽象化するように機能しているため、setuptoolsの問題に対する特別な場合の回避策がその目標に反することです。

結局、 --prefixを使用し、カスタムの--install-optionを使用せずに、やりたいことができたので、 --editableを渡すかどうかに関係なく、最終的に同じオプションを使用できます。 。

ただし、レイアウトを指定するpipオプションがないため、既存の(debian)レイアウトをpipのデフォルト(site-packages)に一致するように調整する必要がありました...

たぶん、追加を検討する機能ですか?

@xavfernandez

これには--target optionラベルが必要です。

-eオプションと-tオプションの両方を使用するのが最善の回避策を教えてください。 '--home'オプションをサポートしているので、distutilsを使用することを提案していますか?

連絡あった?

私はまだ--editable--prefix--target代わりに)を使用しています。これは私のために仕事をします。 しかし、 --prefix--targetの違いのため、pip <9.0.0で立ち往生しています。 詳細については、 https://github.com/pypa/pip/issues/4243をご覧ください。

あなたが持っている代わりに、あなたが必要とする--targetの--prefixオプションを使用したい場合はPYTHONPATH (ポインティングに-作成するのsite-packagesディレクトリに)呼び出すことができます前に正しく設定をpip -t . --prefix myprefix 。 これを回避するためのエレガントな方法はありますか?

関連する問題の束を単一の問題に移動するために閉じる:#4390。

これは、依存関係をアプリルートのディレクトリにインストールする必要があるが、QAプロセスの一部としてローカルチェックアウトに編集可能な依存関係をデプロイする必要があるGoogleAppengine開発者にとっての問題であることを付け加えておきます。 現状では、編集者は手動でシンボリックリンクする必要があり、面倒です。

このスレッドは、閉じられた後に最近のアクティビティがないため、自動的にロックされています。 関連するバグについては、新しい問題を開いてください。

このページは役に立ちましたか?
0 / 5 - 0 評価