遇到的问题
使用pipenv作为包管理器,安装mysqlclient
pipenv install mysqlclient
报错如下:
pipenv install mysqlclient
Installing mysqlclient...
Resolving mysqlclient...
Added mysqlclient to Pipfile's [packages] ...
✔ Installation Succeeded
Pipfile.lock (1a61a1) out of date: run `pipfile lock` to update to (d0575f)...
Running $ pipenv lock then $ pipenv sync.
Locking [packages] dependencies...
Building requirements...
Resolving dependencies...
✘ Locking Failed!
⠦ Locking packages...False
ERROR:pip.subprocessor:Getting requirements to build wheel exited with 1
[ResolutionFailure]: File "/opt/homebrew/lib/python3.11/site-packages/pipenv/resolver.py", line 645, in _main
[ResolutionFailure]: resolve_packages(
[ResolutionFailure]: File "/opt/homebrew/lib/python3.11/site-packages/pipenv/resolver.py", line 612, in resolve_packages
[ResolutionFailure]: results, resolver = resolve(
[ResolutionFailure]: ^^^^^^^^
[ResolutionFailure]: File "/opt/homebrew/lib/python3.11/site-packages/pipenv/resolver.py", line 592, in resolve
[ResolutionFailure]: return resolve_deps(
[ResolutionFailure]: ^^^^^^^^^^^^^
[ResolutionFailure]: File "/opt/homebrew/lib/python3.11/site-packages/pipenv/utils/resolver.py", line 932, in resolve_deps
[ResolutionFailure]: results, hashes, internal_resolver = actually_resolve_deps(
[ResolutionFailure]: ^^^^^^^^^^^^^^^^^^^^^^
[ResolutionFailure]: File "/opt/homebrew/lib/python3.11/site-packages/pipenv/utils/resolver.py", line 700, in actually_resolve_deps
[ResolutionFailure]: resolver.resolve()
[ResolutionFailure]: File "/opt/homebrew/lib/python3.11/site-packages/pipenv/utils/resolver.py", line 457, in resolve
[ResolutionFailure]: raise ResolutionFailure(message=str(e))
[pipenv.exceptions.ResolutionFailure]: Warning: Your dependencies could not be resolved. You likely have a mismatch in your sub-dependencies.
You can use $ pipenv run pip install <requirement_name> to bypass this mechanism, then run $ pipenv graph to inspect the versions actually installed in the virtualenv.
Hint: try $ pipenv lock --pre if it is a pre-release dependency.
ERROR: Getting requirements to build wheel exited with 1
Traceback (most recent call last):
File "/opt/homebrew/bin/pipenv", line 8, in <module>
sys.exit(cli())
^^^^^
File "/opt/homebrew/lib/python3.11/site-packages/pipenv/vendor/click/core.py", line 1157, in __call__
return self.main(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/opt/homebrew/lib/python3.11/site-packages/pipenv/cli/options.py", line 58, in main
return super().main(*args, **kwargs, windows_expand_args=False)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/opt/homebrew/lib/python3.11/site-packages/pipenv/vendor/click/core.py", line 1078, in main
rv = self.invoke(ctx)
^^^^^^^^^^^^^^^^
File "/opt/homebrew/lib/python3.11/site-packages/pipenv/vendor/click/core.py", line 1688, in invoke
return _process_result(sub_ctx.command.invoke(sub_ctx))
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/opt/homebrew/lib/python3.11/site-packages/pipenv/vendor/click/core.py", line 1434, in invoke
return ctx.invoke(self.callback, **ctx.params)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/opt/homebrew/lib/python3.11/site-packages/pipenv/vendor/click/core.py", line 783, in invoke
return __callback(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/opt/homebrew/lib/python3.11/site-packages/pipenv/vendor/click/decorators.py", line 92, in new_func
return ctx.invoke(f, obj, *args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/opt/homebrew/lib/python3.11/site-packages/pipenv/vendor/click/core.py", line 783, in invoke
return __callback(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/opt/homebrew/lib/python3.11/site-packages/pipenv/cli/command.py", line 209, in install
do_install(
File "/opt/homebrew/lib/python3.11/site-packages/pipenv/routines/install.py", line 234, in do_install
raise e
File "/opt/homebrew/lib/python3.11/site-packages/pipenv/routines/install.py", line 209, in do_install
do_init(
File "/opt/homebrew/lib/python3.11/site-packages/pipenv/routines/install.py", line 624, in do_init
do_update(
File "/opt/homebrew/lib/python3.11/site-packages/pipenv/routines/update.py", line 61, in do_update
do_lock(
File "/opt/homebrew/lib/python3.11/site-packages/pipenv/routines/lock.py", line 66, in do_lock
venv_resolve_deps(
File "/opt/homebrew/lib/python3.11/site-packages/pipenv/utils/resolver.py", line 873, in venv_resolve_deps
c = resolve(cmd, st, project=project)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/opt/homebrew/lib/python3.11/site-packages/pipenv/utils/resolver.py", line 737, in resolve
raise RuntimeError("Failed to lock Pipfile.lock!")
RuntimeError: Failed to lock Pipfile.lock!
解决方法
在网上搜索了很多,最后在mysqlclient的官方文档中找到了解决方法。https://pypi.org/project/mysqlclient/
重新安装pk-config,可能会重新更新之前用brew安装的应用,导致花费一点时间更新应用,耐心等待即可。
brew install mysql pkg-config
pipenv install mysqlclient