如何让pypi正确识别操作系统

Posted

技术标签:

【中文标题】如何让pypi正确识别操作系统【英文标题】:How to get pypi to recognise the OS correctly 【发布时间】:2013-12-29 22:16:45 【问题描述】:

我有一个在 Pypi 上注册的包。但是,当我从 ubuntu 执行 sudo pip install mypackage 时,它给了我 windows 包而不是 linux 包。你如何配置你的包来为正确的操作系统提供正确的版本?

【问题讨论】:

你是什么意思它给你的windows包?您是否将预编译的鸡蛋发布到 PyPI?你能给我们提供你的包裹的链接吗? pip install 通常不会安装鸡蛋;它将改为下载源版本并安装。 你有二进制分发包而不是鸡蛋?你是怎么上传这些的? pip 不支持此类发行版,并且无法区分此处的平台版本。它假定所有 tarball 只是源代码分发。 【参考方案1】:

pip 不支持安装分发为“哑”二进制文件的软件包。仅支持源分发、鸡蛋和***。

使用哑二进制文件还有其他各种缺点,尤其是没有列出编译它们的 Python 版本,并且它们包含文件的完整路径,使得这些发行版对大多数最终用户几乎无用。这样的二进制文件实际上应该只在目标机器已经存在确切依赖关系的内部发行版中使用。他们在 PyPI 上真的没有任何位置。

使用setuptools 并为 Windows 分发鸡蛋,仅限。对于所有其他平台,仅分发源代码。如果您也计划提供***发行版,请在源发行版之外进行。

带有编译的 C 扩展的 Eggs 有一些缺点(特别是在必须支持 Unicode 字符串时;Python 有宽和窄的 Unicode 版本,并且 egg 不记录它们编译的版本),所以坚持大多数平台的源代码分发最好。

【讨论】:

啊,所以支持 windows(用户不太可能编译)是 easy_install 更好? @marshall:使用bdist_egg 代替二进制分发。 @marshall:python setup.py bdist_egg 是该命令产生一个 Python 鸡蛋分布;这记录了 Python 版本和平台。您需要使用 setuptools 而不是 distutils 才能使用该命令。 @marshall:我还没有使用 Wheel,但我不明白为什么它不值得使用。改用python setup.py bdist_wheel 很容易。 :-) 鸡蛋是由 per 操作系统创建的;他们的名字包括信息和工具,如 PIP 查找。

以上是关于如何让pypi正确识别操作系统的主要内容,如果未能解决你的问题,请参考以下文章

如何让 mogenerator 识别可转换属性的正确类型?

虚拟机新增硬盘,如何让Linux系统识别到?

如何让 VS Code 识别 ES7 绑定操作符

光学字符识别

台式机安装黑苹果MacOS 10.15.3后,系统无法正确的识别主板信息了。该如何恢复?

hp服务器换主板后如何识别阵列