如何让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正确识别操作系统的主要内容,如果未能解决你的问题,请参考以下文章