仅在平台为Windows时安装python依赖项

时间:2019-04-25 01:03:24

标签: python-2.7 dependencies setuptools

我想在pywin32

时将setup.py作为条件Python依赖项添加到platform_system == Windows

有人可以给我提示如何使其工作吗?

探索stackoverflow之后,尚未找到python2.7的答案。

我正在使用Python 2.7,setuptools 28.x.x,pip19.x.x。 Egg-info是自动构建的。

from setuptools import setup, find_packages
import platform

platform_system = platform.system()

setup(
    name=xxx,
    version=xxx,
    packages=find_packages(),
    include_package_data=True,
    install_requires=[
        'matplotlib',
    ],
    extras_require={
        'platform_system=="Windows"': [
            'pywin32'
        ]
    },
    entry_points='''
        [console_scripts]
        xx:xx
    ''',
)

我不了解extras_require中的键如何工作。 platform_system会在前面引用platform_system的定义吗?

我也尝试过:

from setuptools import setup, find_packages
import platform

setup(
    xxx
    install_requires=[
        'matplotlib',
        'pywin32;platform_system=="Windows"',
    ],
)

但这仅适用于python_version>=3.4

另外,看来https://www.python.org/dev/peps/pep-0508/对我不起作用。

1 个答案:

答案 0 :(得分:0)

检查Python os模块

os.name 导入的操作系统相关模块的名称。当前已注册以下名称:'posix','nt','os2','ce','java','riscos'。

nt 用于Windows操作系统。

import os

if os.name == 'nt':
    # Windows-specific code here...

您也可以选中sys.platform

sys.platform 例如,该字符串包含一个平台标识符,该标识符可用于将特定于平台的组件附加到sys.path。

import sys

if sys.platform.startswith('win32'):
    # Windows-specific code here...

已编辑: 根据您的问题,如果操作系统是Windows,则要安装pywin32。 我认为这段代码将为您提供帮助:

import sys


INSTALL_REQUIRES = [
    # ...
]
EXTRAS_REQUIRE = {
    # ...
}

if sys.platform.startswith('win32'):
    INSTALL_REQUIRES.append("pywin32")

setup(
    # ...
    install_requires=INSTALL_REQUIRES,
    extras_require=EXTRAS_REQUIRE,
)