11

使用 上传我的 Python C 扩展的二进制分发后python setup.py bdist uploadeasy_install [my-package-name]出现“错误:在 /tmp/easy_install/package-name-etc-etc 中找不到安装脚本”失败。

我究竟做错了什么?

4

3 回答 3

42

这可能与您的具体问题无关,但我提供此信息以防对其他人有帮助。

我在运行时遇到了这个错误easy_install xyz。问题原来是我xyz在当前工作目录中有一个名为的子目录,而 easy_install 期望在该子目录中本地找到一个安装脚本,而不是去网上获取真正的xyz. 重命名我的本地 xyz 目录暂时解决了这个问题。

这是您提供的命令行参数可能无意中被同名文件或文件夹遮蔽的多种情况之一。另一个例子是make:如果你make test试图让你的测试目标运行并且你碰巧有一个名为的文件夹,test那么make将不会做你想做的事。这种情况下的解决方案是指示Phony Targets

于 2013-02-03T17:38:07.153 回答
8

easy_install 期望找到一个源代码发行版或一个鸡蛋。最好将源分布sdist(多个版本的python?)。

bdist命令无需额外配置即可为您当前的平台创建一个.tar.gz.zip存档,其中包含已编译的 python 文件(以及已编译的任何 C 扩展),无安装程序(因此不包括该setup.py文件)。它旨在用于在您的站点包位置手动解包并通过鸡蛋提前分发。如果您要解压缩它,您会注意到它甚至在 tarball 中包含了站点包目录的完整绝对路径!

您可以配置bdist生成 RPM 或 .deb 文件,或简单的 Windows 安装程序,但这些再次旨在为与 PyPI 和 easy_install 无关的其他分发系统提供安装包。

所以,总而言之,在大多数情况下,最好上传一个sdist源代码分发,并在安装时让 easy_install 进行 python 编译(到一个鸡蛋中)。

如果您确实要上传预编译的发行版(然后将其绑定到特定的 Python 版本和编译它的平台),请改用该bdist_egg命令。

于 2011-06-04T16:42:54.423 回答
1

有时您实际上并不真正打算轻松安装“目录”,它将查找 setup.py 文件。简而言之,您可能正在做easy_install xyz/ ,而您真正想做的是easy_install xyz

于 2016-09-19T18:37:03.293 回答