我目前正在尝试找到一种方法来设置以python编写的应用程序到我们的生产主机。我目前使用Debian软件包apt仓库,所以我倾向于将应用程序打包为deb软件包。
stdeb工具允许我这样做,并且我成功使用以下setup.py
创建了一个deb程序包:
import setuptools
ld = "Some long description"
setuptools.setup(
name = "my_fancy_app",
version="0.0.1",
author="Me Myself",
author_email="[email protected]",
description="Some description",
long_description=ld,
packages=setuptools.find_packages(),
entry_points={
'console_scripts': [ 'hlpth = my_fancy_app.__main__:main' ]
},
classifiers=[
"Programming Language :: Python :: 3.7",
"License :: OSI Approved :: MIT License",
"Operating System :: OS Independent",
],
python_requires='>=3.7'
)
我看到的问题是Debian软件包中的路径已指定为指向系统site-packages
。在这里
$ dpkg -c deb_dist/python3-my-fancy-app_0.0.1-1_all.deb
-rw-r--r-- root/root 1 2019-11-27 15:22 ./usr/lib/python3/dist-packages/my_fancy_app/__init__.py
-rw-r--r-- root/root 78 2019-11-27 15:23 ./usr/lib/python3/dist-packages/my_fancy_app/__main__.py
//...other entries omitted
从我现在看到的情况来看,这种deb
包装坚持将包装设置为“核心” site-packages
。有没有一种方法可以使用Debian软件包解决此问题,并使该应用程序能够安装到虚拟环境中?
Python虚拟环境是使用Python的打包工具(主要是pip
,但还有替代方法)进行管理。
通过将某些东西打包到Debian软件包中,您已经将其移动到了与Python工具不兼容的格式,当然Debian打包工具对Python虚拟环境一无所知。
[如果您想在虚拟环境中使用您的应用,只需将其打包为Python软件包即可。没有理由为此用例构建.deb
程序包。