是否可以在 setup.py 中表达特定于平台的依赖项,而无需构建特定于平台的 Egg 版本?
我们有一个占位符 Egg,它不包含任何代码,其存在只是为了从 PyPi 存储库中提取依赖包列表。
大多数这些依赖包与平台无关,但有些仅在 Win32 平台上使用。
是否可以以某种方式使依赖项具有平台条件,以便我的 install_requires
列表中的给定依赖项仅在 Win32 上安装时才会被下拉?
或者:是否可以指定可选依赖项列表,如果可用,将安装这些依赖项,但如果不可用,也不会导致 easy_install
失败?
We have a placeholder egg that contains no code and only exists for the sake of pulling down a list of dependent packages from our PyPi repository.
Most of these dependent packages are platform-agnostic, however some are only used on Win32 platforms.
Is it possible to somehow make the dependency platform-conditional, so that a given dependency in my install_requires
list will only get pulled down when installing on Win32?
Alternatively: Is it possible to specify a list of optional dependencies, that will be installed if available, but will not cause easy_install
to fail if they are not?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
对于 sdist、egg 和wheel 版本: https:// setuptools.readthedocs.io/en/latest/userguide/dependency_management.html#platform-specific-dependencies
For sdist, egg and wheel release from : https://setuptools.readthedocs.io/en/latest/userguide/dependency_management.html#platform-specific-dependencies
在
setup.py
中:如果您需要的话,
distutils.util.get_platform
比sys.platform
拥有更多信息:In
setup.py
:distutils.util.get_platform
has more information thansys.platform
if you need it:使用
extras_require
分发选项使“win32 支持”成为可选功能:然后在 Windows 上安装时指定 win32 功能:
这将拉取列出的
pywin32
包作为 mypackage 的“win32”功能的依赖项。请参阅此处了解更多信息关于可选功能。
Use the
extras_require
distribution option to make 'win32 support' an optional feature:Then specify the win32 feature when installing on Windows:
This will pull down the
pywin32
package, which is listed as a dependency for the 'win32' feature of mypackage.See here for more information about optional features.
构建 Egg 时(使用 python setup.py bdist_egg),您可以强制 setuptools/distribute 构建特定于平台的 Egg。
然后您可以运行:
When the egg is built (using
python setup.py bdist_egg
), you can force setuptools/distribute to build a platform-specific egg.You can then run: