Установите зависимость Python только тогда, когда платформа Windows - PullRequest
0 голосов
/ 25 апреля 2019

Я хочу добавить pywin32 как Условные зависимости Python до setup.py, когда platform_system == Windows

Может кто-нибудь дать мне подсказку о том, как заставить это работать?

После изучения переполнения стека, мы не нашли ответа на python2.7.

Я использую Python 2.7, setuptools 28.xx, pip 19.xx 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 голосов
/ 25 апреля 2019

Проверка Python os module

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...

Отредактировано: Исходя из вашего вопроса, вы хотите установить pywin32, если ОС Windows.Я думаю, что этот код поможет вам:

import sys


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

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

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