.dll
的包(例如tensorflow 或 scipy),我的访问始终被拒绝。
conda create --name test python=3.7
conda activate test
pip install poetry
poetry add "tensorflow=1.5.1" scipy pandas
poetry install
poetry add "tensorflow=1.4.1"
poetry install
会回到我身边
ERROR: Could not install packages due to an EnvironmentError: [WinError 5] Access is denied:
poetry install
。通常每次都会在不同的包上失败。
pip install ...
来作弊该包
对于纯Python包,通常可以毫无怨言地进行替换,因为解释器已经将模块加载到内存中并且不需要文件。
对于使用编译库(
.dll
或
.pyd
)的包,此 Python 解释器会锁定文件不被删除。 这将导致
[WinError 5] Access is denied...
类型错误。困扰我的一个问题是
charset-normalizer
包,它使用
.pyd
文件。 存储库的定义是
charset-normalizer==3.4.0
,而诗歌环境当前具有
charset-normalizer==3.3.2
,因此它试图在升级时删除它。 由于诗歌.exe 正在使用此文件,因此该过程将失败并出现相同的
[WinError 5]
。要解决此问题,您可以使用 pip 手动更正文件版本:
pip uninstall my_problem_package
pip install my_problem_package==1.0.0
)。
在其他情况下,可能正在运行一些正在使用该文件的其他进程。 您可以尝试搜索并关闭有问题的进程(如果也失败则重新启动)。 被锁定的违规文件可能会通过其他答案找到:
https://superuser.com/questions/117902/find-out-which-process-is-locking-a-file-or-folder-in-windows