[追記]
This has been implemented and will be in pip 21.1. You can try the main branch with –use-feature=in-tree-build.
https://github.com/pypa/pip/issues/9819
だそうです。
困った。
状況としては setuptools-rust
を使って相対パスで指定した Rust の dependencies がパスが存在しないとして処理されてしまう。
pip install .
でインストールできなかったのだが、pip
を使ってインストールすると、インストール前にそのパッケージが /tmp
以下のフォルダに一時的にコピーされてしまうことが原因のようだった。
poetry
を使っていると全部 pip
でインストールしようとしてしまうので、python setup.py install
だと問題がないことでも困ってしまう。
とりあえず、自前の pip を作り直して解決。
diff --git a/src/pip/_internal/operations/prepare.py b/src/pip/_internal/operations/prepare.py
index 3d074f9f6..c871f2c11 100644
--- a/src/pip/_internal/operations/prepare.py
+++ b/src/pip/_internal/operations/prepare.py
@@ -547,10 +547,14 @@ class RequirementPreparer:
local_file = None
elif link.url not in self._downloaded:
try:
- local_file = unpack_url(
- link, req.source_dir, self._download,
- self.download_dir, hashes
- )
+ if not link.is_existing_dir():
+ local_file = unpack_url(
+ link, req.source_dir, self._download,
+ self.download_dir, hashes,
+ )
+ else:
+ req.source_dir = link.file_path
+ local_file = None
except NetworkConnectionError as exc:
raise InstallationError(
'Could not install requirement {} because of HTTP '
コメント