由于 OSError 无法安装软件包:[WinError 2]系统找不到指定的文件
Could not install packages due to an OSError: [WinError 2] The system cannot find the file specified
当我们没有安装软件包所需的权限时,会出现错误“由于 OSError 无法安装软件包:[WinError 2]系统找不到指定的文件”。
要解决该错误,请运行带有选项的命令--user
,例如
pip install numpy --user
。
Could not install packages due to an OSError: [WinError 2] The system cannot find the file specified: 'C:\Python310\Scripts\f2py.exe' -> 'C:\Python310\Scripts\f2py.exe.deleteme'
--user
使用选项安装包
解决该错误的一种方法是安装范围仅限于当前用户的软件包,而不需要提升权限。
pip install <package-name> --user pip3 install <package-name> --user python -m pip install <package-name> --user python3 -m pip install <package-name> --user
确保将<package-name>
占位符替换为包的实际名称,例如pip install numpy --user
。
该--user
选项将包安装在用户的主目录中。
但是,--user
如果您有活动的虚拟环境,该选项将不起作用。
另一件经常解决该错误的方法是pip
在安装特定软件包之前升级您的版本。
python -m pip install --user --upgrade pip python -m pip install numpy python3 -m pip install --user --upgrade pip python3 -m pip install numpy
如果这没有帮助,请以管理员身份运行 CMD 并安装该软件包。
以管理员身份运行CMD
以管理员身份运行 CMD:
- 单击搜索栏并输入“cmd”。
- 右键单击“命令提示符”。
- 单击“以管理员身份运行”。
- 以管理员身份打开 shell 后,重新运行该
pip install
命令。
pip install <package-name> pip3 install <package-name> python -m pip install <package-name> python3 -m pip install <package-name>
pip install
。如果以管理员身份打开 CMD 没有帮助,请尝试以管理员身份打开 PowerShell 并运行该命令。
以管理员身份运行 PowerShell:
- 单击搜索栏并输入“PowerShell”。
- 右键单击“Windows PowerShell”。
- 单击“以管理员身份运行”。
pip install
。安装包时尝试停止任何其他 Python 脚本。
当文件被另一个进程锁定时,Windows 会抛出“OSError: [WinError 2]系统找不到指定的文件”。
拥有多个版本的Python
如果您有多个版本的 Python(2.X 和 3.X)并且已将
python.exe
可执行文件重命名为python3.exe
,请尝试将该文件重命名回
python.exe
.
将文件重命名为python.exe
(如果您之前更改过名称)后尝试发出 python 命令。
如果错误仍然存在,请更改用户的访问权限。
更改用户的访问权限
该错误通常是由于用户无权修改应安装包的目录而引起的。
要解决该错误,请允许用户完全访问 Python 目录。
要更改用户的访问权限:
- 打开安装 Python 的文件夹,例如
C:\Program Files (x86)\Python310
。
您可以使用以下 2 个命令之一找到 Python 的安装位置。
where python python -c "import os, sys; print(os.path.dirname(sys.executable))"
- 打开Python安装目录后,右键单击“Python”或“Python310”文件夹,然后单击“属性”。
- 转到“安全”选项卡并单击“编辑”按钮。
- 允许您的用户或整个“用户”组“完全控制”。
- 点击“应用”。
- 再次运行
pip install <package-name>
命令。
一旦您向用户授予“完全访问”权限,您应该能够
pip install
打包而不会出现任何错误。
如果您有一个活动的虚拟环境,您的 Python 位置将限定在特定的虚拟环境中。
您可以where python
在虚拟环境处于活动状态时运行该命令来查找该目录。
如果这未能解决错误,请尝试升级您的pip
.
# 👇️ if you have pip already installed pip install --upgrade pip # 👇️ if your pip is aliased as pip3 (Python 3) pip3 install --upgrade pip # 👇️ if you don't have pip in your PATH environment variable python -m pip install --upgrade pip # 👇️ if you don't have pip in your PATH environment variable python3 -m pip install --upgrade pip # 👇️ if you have easy_install easy_install --upgrade pip
如果您收到错误“ModuleNotFoundError:Python 中没有名为 ‘pip’ 的模块”,请查看我的另一篇文章:
如果代码示例中的命令不适合您,请单击“Install pip in Python”链接。
升级 pip 后,
还要升级setuptools 。
pip install --upgrade setuptools pip3 install --upgrade setuptools python3 -m pip install --upgrade setuptools
该错误通常可以通过升级pip
版本并重新运行
pip install
命令来解决。
创建虚拟环境
如果错误仍然存在,请尝试创建虚拟环境。
- 创建虚拟环境。
- 激活虚拟环境。
pip install
在虚拟环境处于活动状态时运行命令。
# 👇️ use correct version of Python when creating VENV python3 -m venv venv # 👇️ activate on Unix or MacOS source venv/bin/activate # 👇️ activate on Windows (cmd.exe) venv\Scripts\activate.bat # 👇️ activate on Windows (PowerShell) venv\Scripts\Activate.ps1 # 👇️ install the specific package in the virtual environment pip install numpy
确保根据您的操作系统和 shell 使用正确的命令来激活虚拟环境。
您的虚拟环境将使用用于创建它的 Python 版本。
确保不要以 root 身份创建虚拟环境,例如,sudo
因为这样您就只允许 root 用户安装软件包。
如果您使用创建虚拟环境sudo
,请尝试更改其权限或在不使用 的情况下重新创建它sudo
。
sudo chmod -R 777 venv
上面的命令假设您的虚拟环境位于名为 的文件夹中
venv
。
777
意味着授予所有用户对该目录内容的完全访问权限。
在 venv 配置文件中将“include-system-site-packages”设置为“true”
如果您使用虚拟环境,另一件事可能会有所帮助是:
- 打开你的
venv
文件夹。 - 单击该
pyvenv.cfg
文件。 - 将
include-system-site-packages
属性设置为true
. - 保存文件。
- 重新运行该
pip install
命令。
结论
解决“由于 OSError 无法安装软件包:[WinError 2]系统找不到指定的文件”错误:
- 运行
pip install
带有--user
选项的命令。 - 安装软件包之前以管理员身份运行 CMD。
- 授予用户对 Python 目录的完全访问权限。