我正在尝试创建一个我一直在研究的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
答案 0 :(得分:0)
当你运行bdist_rpm
时,它也会创建src.rpm。使用此文件运行:
mock -r fedora-24-x86_64 myproject.src.rpm
它将在chroot中创建fedora-24-x86_64环境并在那里构建你的包。使用Fedora 24的正确路径。