基于平台创建python轮

Create python wheel based on platform

我正在尝试将我的 python 代码打包到 wheel 文件中。我的代码依赖因平台而异。 例如,在 Windows 中,我需要 psycopg2,而在 linux 中,我需要 psycopg2-binary

我在我的项目中创建了两个单独的文件:requirements.txtrequirements_linux.txt。 下面是我的详细介绍 Setup.py

requirement_file='requirements.txt'
if sys.platform == 'linux':
    requirement_file = 'requirements_linux.txt'
here = os.path.abspath(os.path.dirname(__file__))
# setup method inside setup.py

setup(
...
...
install_requires=open(os.path.join(here,requirement_file)).readlines(),
...
)

现在我正在使用 windows system.But 命令 python setup.py bdist_wheel 命令创建 wheel 文件,上面的代码似乎不起作用。当我在 linux 环境中 运行 wheel 文件时,它搜索 psycopg2 而不是 psycopg2-binary。我错过了什么吗?

如何为 linux 或 Mac 等其他平台创建 wheel 文件并在其中具有单独的依赖项?

Python 作为 wheel 分发的项目不包含 setup.py 文件。所以安装时不能是运行。

setuptools 指定平台特定依赖项的正确方法如下:

setuptools.setup(
    # ...
    install_requires=[
        "LinuxOnlyDependency ; platform_system=='Linux'",
        "WindowsOnlyDependency ; platform_system=='Windows'"
    ],
    # ...
)

参考文献: