Python3 setuptools bidst_rpm:remove /usr/lib/python3.x/site-packages前缀。将rpm安装目录调整为客户机的python路径

时间:2016-08-05 10:08:03

标签: python python-3.x fedora rpm setuptools

我正在尝试创建一个我一直在研究的python项目的rpm发行版。我在Fedora 24上使用setuptools 25.1.4并使用python3.4。

我可以使用:

生成我的rpm分配
python3 setup.py bdist_rpm

以下是我的setup.cfg文件:

    [bdist_rpm]
no-autoreq=1
requires = python3 >= 3.4
    mariadb
    mariadb-server
    mariadb-devel
    mysql-connector-python3
    redhat-rpm-config
    libffi-devel
    libffi
    libxml2
    libxml2-devel
    libxslt-devel

这会在我的dist文件夹中生成myproject-1.0.0-1.noarch.rpm文件。 rpm分布是使用python3.4创建的。

我希望将我的rpm文件从主机传递到我的客户端计算机。我通过执行一个简单的scp命令来实现这一点。一旦我在我的客户端机器上,我通常会执行以下序列:

dnf install myproject-1.0.0-1.noarch.rpm
rpm -Uvh myproject-1.0.0-1.noarch.rpm

解决了依赖性问题并指定我的软件包已安装。 现在我的问题来自我的客户端机器上实际安装软件包的地方:

/usr/lib/python3.4/site-packages`

此“路径”由setup.py创建并用于构建rpm分发的以下tar文件生成:

  

myproject-1.0.0.linux-x86_64.tar.gz

当我解开它时,它会创建一个文件夹,从主机上复制路径/usr/lib/python3.4/site-packages/my-project /...

这可能是因为我使用python3.4在我的主机上运行了setup.py

我的客户端机器默认安装了python3.5(谢谢Fedora 24)

当然,我可以通过在我的主机上使用python3.5执行setup.py来解决这个问题,但这对我的问题来说是一个令人讨厌且令人不满意的修复。

现在我如何自定义这部分setuptools。我希望实现的是,一旦客户端机器尝试安装我的rpm,它就会将我的python项目包安装到客户端机器的python路径的正确路径上。

最好的情况是实际删除/usr/bin/python3.4/site-packages/前缀并将其替换为/ my-project /之类的简单内容然后在我的客户端计算机上put / my-project /在客户端机器的python活动解释器使用的任何路径中。

我知道前缀问题已在setuptools: remove lib/python3.5/site-packages prefix from zip解决,但OP的解决方案对我不起作用。

我在这里相当新,所以请指出我是否提供了足够的信息。

解决 我偶然发现Override default installation directory for Python bdist Windows installer

它的作用就像一个魅力添加:

[install] 
prefix=/
install_lib=/some/lib/path
install_scripts=/some/bin/path

到我的setup.cfg

1 个答案:

答案 0 :(得分:0)

当你运行bdist_rpm时,它也会创建src.rpm。使用此文件运行:

mock -r fedora-24-x86_64 myproject.src.rpm

它将在chroot中创建fedora-24-x86_64环境并在那里构建你的包。使用Fedora 24的正确路径。