diff --git a/pip/commands/wheel.py b/pip/commands/wheel.py index 75d7b3156e6..0e62e203ff0 100644 --- a/pip/commands/wheel.py +++ b/pip/commands/wheel.py @@ -186,11 +186,6 @@ def run(self, options, args): wheel_download_dir=options.wheel_dir ) - # make the wheelhouse - options.wheel_dir = normalize_path(options.wheel_dir) - if not os.path.exists(options.wheel_dir): - os.makedirs(options.wheel_dir) - try: populate_requirement_set( requirement_set, args, options, logger, finder, @@ -203,7 +198,6 @@ def run(self, options, args): wb = WheelBuilder( requirement_set, finder, - options.wheel_dir, build_options=options.build_options or [], global_options=options.global_options or [], ) diff --git a/pip/req/req_set.py b/pip/req/req_set.py index 2b252221dc4..5d29b558ec7 100644 --- a/pip/req/req_set.py +++ b/pip/req/req_set.py @@ -443,6 +443,11 @@ def prepare_files(self, finder): """ Prepare process. Create temp directories, download and/or unpack files. """ + # make the wheelhouse + if self.wheel_download_dir: + if not os.path.exists(self.wheel_download_dir): + os.makedirs(self.wheel_download_dir) + self._walk_req_to_install( functools.partial(self._prepare_file, finder)) diff --git a/pip/wheel.py b/pip/wheel.py index 57246cae702..e0b2d844a29 100644 --- a/pip/wheel.py +++ b/pip/wheel.py @@ -543,11 +543,11 @@ def supported(self, tags=None): class WheelBuilder(object): """Build wheels from a RequirementSet.""" - def __init__(self, requirement_set, finder, wheel_dir, build_options=None, + def __init__(self, requirement_set, finder, build_options=None, global_options=None): self.requirement_set = requirement_set self.finder = finder - self.wheel_dir = normalize_path(wheel_dir) + self.wheel_dir = requirement_set.wheel_download_dir self.build_options = build_options or [] self.global_options = global_options or [] diff --git a/tests/unit/test_wheel.py b/tests/unit/test_wheel.py index 37d4123c78d..10bd694192d 100644 --- a/tests/unit/test_wheel.py +++ b/tests/unit/test_wheel.py @@ -374,8 +374,9 @@ class TestWheelBuilder(object): def test_skip_building_wheels(self, caplog): with patch('pip.wheel.WheelBuilder._build_one') as mock_build_one: wheel_req = Mock(is_wheel=True, editable=False) - reqset = Mock(requirements=Mock(values=lambda: [wheel_req])) - wb = wheel.WheelBuilder(reqset, Mock(), '/wheel/dir') + reqset = Mock(requirements=Mock(values=lambda: [wheel_req]), + wheel_download_dir='/wheel/dir') + wb = wheel.WheelBuilder(reqset, Mock()) wb.build() assert "due to already being wheel" in caplog.text() assert mock_build_one.mock_calls == [] @@ -383,8 +384,9 @@ def test_skip_building_wheels(self, caplog): def test_skip_building_editables(self, caplog): with patch('pip.wheel.WheelBuilder._build_one') as mock_build_one: editable_req = Mock(editable=True, is_wheel=False) - reqset = Mock(requirements=Mock(values=lambda: [editable_req])) - wb = wheel.WheelBuilder(reqset, Mock(), '/wheel/dir') + reqset = Mock(requirements=Mock(values=lambda: [editable_req]), + wheel_download_dir='/wheel/dir') + wb = wheel.WheelBuilder(reqset, Mock()) wb.build() assert "due to being editable" in caplog.text() assert mock_build_one.mock_calls == []