已安装setuptools执行setup.py sdist仍报ModuleNotFoundError错误
根本原因
本地存在多套独立Python环境,python、pip、easy_install三个命令分别绑定了不同环境的可执行文件,环境之间的包完全不互通:
easy_install绑定的是C:\Users\MY PC\AppData\Local\Programs\Python\Python38\目录下的官方原生Python 3.8,该环境安装了setuptools 41.2.0pip绑定的是Anaconda内置的Python环境,路径为C:\Users\MY PC\anaconda3\,该环境安装了setuptools 52.0.0- 终端中直接调用的
python命令,既不指向上述原生Python3.8,也不指向Anaconda的Python,大概率指向了未安装setuptools的其他虚拟环境、或系统中残留的其他Python版本,因此运行打包脚本时触发模块找不到的报错。
解决方法
- 先定位当前终端默认调用的
python解释器真实路径,在PowerShell中执行以下命令:
python -c "import sys; print(sys.executable)"
命令输出的完整路径,就是你当前敲python时实际运行的程序位置。
2. 针对这个确定的解释器安装setuptools,不要直接调用全局pip,用解释器本身调用pip模块完成安装,避免再次串到其他环境:
<上一步输出的python完整路径> -m pip install setuptools
举个例子,如果上一步输出的路径是D:\pyenv\test38\python.exe,就执行D:\pyenv\test38\python.exe -m pip install setuptools。
3. 安装完成后,用同一个解释器路径执行打包命令即可:
<上一步输出的python完整路径> setup.py sdist
长期规避方案:把你日常要用的Python安装目录、以及目录下的Scripts子文件夹,挪到系统环境变量PATH的最靠前位置,让终端优先识别你需要的版本,从根源上避免多环境命令串扰。
内容的提问来源于stack exchange,提问作者Brainiedude
相关产品推荐
相关产品推荐

