基于平台创建python轮
Create python wheel based on platform
我正在尝试将我的 python 代码打包到 wheel 文件中。我的代码依赖因平台而异。
例如,在 Windows 中,我需要 psycopg2
,而在 linux 中,我需要 psycopg2-binary
。
我在我的项目中创建了两个单独的文件:requirements.txt
和 requirements_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'"
],
# ...
)
参考文献:
我正在尝试将我的 python 代码打包到 wheel 文件中。我的代码依赖因平台而异。
例如,在 Windows 中,我需要 psycopg2
,而在 linux 中,我需要 psycopg2-binary
。
我在我的项目中创建了两个单独的文件:requirements.txt
和 requirements_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'"
],
# ...
)
参考文献: