将python应用程序打包到deb中会禁止使用虚拟环境吗?

问题描述 投票:1回答:1

我目前正在尝试找到一种方法来设置以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 linux debian python-3.7 python-venv
1个回答
2
投票

Python虚拟环境是使用Python的打包工具(主要是pip,但还有替代方法)进行管理。

通过将某些东西打包到Debian软件包中,您已经将其移动到了与Python工具不兼容的格式,当然Debian打包工具对Python虚拟环境一无所知。

[如果您想在虚拟环境中使用您的应用,只需将其打包为Python软件包即可。没有理由为此用例构建.deb程序包。

© www.soinside.com 2019 - 2024. All rights reserved.