如何在 Windows 上使用 Python 的“easy_install”……没那么容易
Posted
技术标签:
【中文标题】如何在 Windows 上使用 Python 的“easy_install”……没那么容易【英文标题】:How to use Python's "easy_install" on Windows ... it's not so easy 【发布时间】:2011-04-30 06:59:38 【问题描述】:在 Windows XP 上安装 Python 2.7 后,然后手动将 %PATH%
设置为 python.exe
(为什么 python 安装程序不这样做?),然后安装 setuptools 0.6c11
(为什么 python 安装程序不这样做) ?),然后手动将%PATH%
设置为easy_install.exe
(为什么安装程序不这样做?),我终于尝试使用easy_install
安装python包,但是easy_install
在无法安装时失败pywin32 包,这是一个依赖项。 如何让 easy_install 在 Windows XP 上正常工作?失败如下:
C:\>easy_install winpexpect 正在搜索 winpexpect 最佳匹配:winpexpect 1.4 处理winpexpect-1.4-py2.7.egg winpexpect 1.4 已经是 easy-install.pth 中的活动版本 使用 c:\python27\lib\site-packages\winpexpect-1.4-py2.7.egg 处理 winpexpect 的依赖关系 搜索 pywin32>=214 阅读 http://pypi.python.org/simple/pywin32/ 阅读 http://sf.net/projects/pywin32 阅读 http://sourceforge.net/project/showfiles.php?group_id=78018 找不到 pywin32>=214 的本地包或下载链接 最佳匹配:无 回溯(最近一次通话最后): 文件“C:\python27\scripts\easy_install-script.py”,第 8 行,在 load_entry_point('setuptools==0.6c11', 'console_scripts', 'easy_install')() 文件“C:\python27\lib\site-packages\setuptools\command\easy_install.py”,第 1712 行,在 main with_ei_usage(lambda: 文件“C:\python27\lib\site-packages\setuptools\command\easy_install.py”,第 1700 行,在 with_ei_usage 返回 f() 文件“C:\python27\lib\site-packages\setuptools\command\easy_install.py”,第 1716 行,在 distclass=DistributionWithoutHelpCommands, **kw 文件“C:\python27\lib\distutils\core.py”,第 152 行,在设置中 dist.run_commands() 文件“C:\python27\lib\distutils\dist.py”,第 953 行,在 run_commands self.run_command(cmd) 文件“C:\python27\lib\distutils\dist.py”,第 972 行,在 run_command cmd_obj.run() 运行中的文件“C:\python27\lib\site-packages\setuptools\command\easy_install.py”,第 211 行 self.easy_install(规范,不是 self.no_deps) 文件“C:\python27\lib\site-packages\setuptools\command\easy_install.py”,第 446 行,在 easy_install return self.install_item(spec, dist.location, tmpdir, deps) 文件“C:\python27\lib\site-packages\setuptools\command\easy_install.py”,第 481 行,在 install_item self.process_distribution(spec, dists[0], deps, "使用") 文件“C:\python27\lib\site-packages\setuptools\command\easy_install.py”,第 519 行,在 process_distribution [要求]、self.local_index、self.easy_install 解析中的文件“C:\python27\lib\site-packages\pkg_resources.py”,第 563 行 dist = best[req.key] = env.best_match(req, self, installer) 文件“C:\python27\lib\site-packages\pkg_resources.py”,第 799 行,在 best_match return self.obtain(req, installer) # 尝试下载/安装 文件“C:\python27\lib\site-packages\pkg_resources.py”,第 811 行,在获取 返回安装程序(要求) 文件“C:\python27\lib\site-packages\setuptools\command\easy_install.py”,第 434 行,在 easy_install self.local_index 文件“C:\python27\lib\site-packages\setuptools\package_index.py”,第 475 行,在 fetch_distribution 返回 dist.clone(location=self.download(dist.location, tmpdir)) AttributeError:“NoneType”对象没有属性“克隆”
【问题讨论】:
@Rafe:这对他一点帮助都没有。 @Sergio Tapia:只是一个建议。 要回答上面的一个问题,Python 安装程序不会修改您的 PATH 变量,因为 1) 它无法在卸载时正确修改 PATH,以及 2) 您可以在同一个上拥有多个 Python 版本系统,这可能会导致意外行为。见bugs.python.org/issue3561 为什么 setuptools 不是标准 Python 发行版的一部分,请参阅 faassen.n--tree.net/blog/view/weblog/2009/11/09/0 布兰登:感谢您的意见。我知道这是一个有点切题的讨论,我不得不说,当你做出艰难的决定时,比如是否设置 PATH 或预加载哪个包管理器,最好的办法是给用户无论如何,他们可能想要做的事情的选项。示例:“将python添加到路径?如果你不知道这是什么意思,请选择yes。[yes] [no]” ... “安装setuptools并设置他们的路径?如果你不知道这是什么意思,请选择是的。[是] [否]”。这不是一个完美的解决方案,但它比将新手派往谷歌要好得多。 【参考方案1】:如果您使用的是Anaconda's Python 分发版,
可以通过pip安装
pip install setuptools
然后作为模块执行
python -m easy_install
【讨论】:
【参考方案2】:从以下 URL 复制以下脚本“ez_setup.py”
https://bootstrap.pypa.io/ez_setup.py
并将其复制到您的 Python 位置
C:\Python27>
运行命令
C:\Python27? python ez_setup.py
这将在 Scripts 目录下安装 easy_install
C:\Python27\脚本
从 Scripts 目录运行简易安装 >
C:\Python27\Scripts> easy_install
【讨论】:
【参考方案3】:我也同意 OP 的观点,即所有这些东西都应该随 Python 一起提供。我想我们将不得不处理它,直到那一天到来。这是一个实际上对我有用的解决方案:
installing easy_install faster and easier
希望对您或遇到同样问题的人有所帮助!
【讨论】:
这对我很有帮助。谢谢! 获取 404:找不到页面【参考方案4】:如果你使用的是windows 7 64位版本,那么解决方法在这里:http://pypi.python.org/pypi/setuptools
也就是说,你需要下载一个python脚本,运行它,然后easy_install就可以从命令行正常工作了。
附:我同意原始海报说这应该开箱即用。
【讨论】:
【参考方案5】:一个问题是easy_install 设置为下载和安装.egg 文件或源代码分发(包含在.tgz、.tar、.tar.gz、.tar.bz2 或.zip 文件中)。它不知道如何处理 PyWin32 扩展,因为它们被放置在within a separate installer executable。您需要下载适当的 PyWin32 安装程序文件(适用于 Python 2.7)并自行运行。当您再次运行 easy_install 时(前提是您已正确安装,如 Sergio 的说明中所示),您应该会看到您的 winpexpect 软件包已正确安装。
由于我们谈论的是 Windows 和开源,它通常可能是安装方法的混乱组合,以使事情正常运行。不过,easy_install 肯定比手动编辑配置文件要好。
【讨论】:
感谢您的帮助。通过手动安装 pywin32 exe 安装程序,easy_install 能够正确安装 winpexpect 软件包。但是,当我在 python 中导入该模块时,它会因“ImportError:没有名为资源的模块”而死。这是我需要完成的另一个步骤以使我的 python 环境正常工作吗?还是只是 winpexpect 模块中的一个错误? OK:找到了解决办法:除了手动安装pywin32,我还得卸载pexpect和winpexpect模块,然后只重新安装winpexpect模块。此时一切正常。 让我们公平一点...混乱不是因为 windows 是闭源的,而是因为已经投入了更多的精力来确保安装过程在 linux 上顺利运行,而 windows 是事后才想到的.没有任何理由 easy_install 无法下载包并在需要时使用 MSBuild 为本地系统编译它。【参考方案6】:一方面,它表示您已经安装了该模块。如果你需要升级它,你应该这样做:
easy_install -U 包名
当然,如果包有一些需要编译的 C 头文件并且您没有安装正确版本的 Visual Studio,那么 easy_install 就不能很好地工作。您可以尝试使用 pip 或分发而不是 easy_install,看看它们是否工作得更好。
【讨论】:
它从未完全安装。它每次都在依赖项上崩溃。它之前可能已部分安装过,但仅此而已。由于此模块适用于 Windows,因此我假设它是预编译的。以上是关于如何在 Windows 上使用 Python 的“easy_install”……没那么容易的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 InstallShield 在 Windows 上最好地安装 Python + 模块
如何在 Python 上使用 Windows Auth 登录 MSSQL?
如何使 APK 在 WINDOWS 上独立于 Kivy 和 python?
如何使用 Python 2.6 在 Windows 上安装 PyGTK / PyGobject?