using setuptools with post-install and python dependencies

This is somewhat related to this question. Let's say I have a package that I want to deploy via rpm because I need to do some file copying on post-install and I have some non-python dependencies I want to declare. But let's also say I have some python dependencies that are easily available in PyPI. It seems like if I just package as an egg, an unzip followed by python setup.py install will automatically take care of my python dependencies, at the expense of losing any post-install functionality and non-python dependencies.

Is there any recommended way of doing this? I suppose I could specify this in a pre-install script, but then I'm getting into information duplication and not really using setuptools for much of anything.

(My current setup involves passing install_requires = ['dependency_name'] to setup, which works for python setup.py bdist_egg and unzip my_package.egg; python my_package/setup.py install, but not for python setup.py bdist_rpm --post-install post-install.sh and rpm --install my_package.rpm.)


Asked by: Briony231 | Posted: 27-01-2022






Answer 1

I think it would be best if your python dependencies were available as RPMs also, and declared as dependencies in the RPM. If they aren't available elsewhere, create them yourself, and put them in your yum repository.

Running PyPI installations as a side effect of RPM installation is evil, as it won't support proper uninstallation (i.e. uninstalling your RPM will remove your package, but leave the dependencies behind, with no proper removal procedure).

Answered by: Freddie143 | Posted: 28-02-2022



Similar questions

python - How can I add post-install scripts to easy_install / setuptools / distutils?

I would like to be able to add a hook to my setup.py that will be run post-install (either when easy_install'ing or when doing python setup.py install). In my project, PySmell, I have some support files for Vim and Emacs. When a user installs PySmell the usual way, these files get copied in the actual egg, and the user has to fish them out and place th...


linux - Run post-install script in a Python Egg (setuptools)

I have created a little Python egg (with setuptools) that I want to install in other machines of my LAN. I have even setup a server for the eggs and all (and the egg is properly downloaded and installed with easy_install -f http://myserver/eggrepository ) :-) I would like to know if there's a way of running an script (bash or Python) when installing it with easy_install (version 0.6c11 and python2.6). ...


python - Post-install errors while installing pywin32-216 on Windows XP

I'm using the pywin32-216.win32-py2.6.exe package to install pywin32 on Python 2.6.5 (r265:79096, Mar 19 2010, 21:48:26) [MSC v.1500 32 bit (Intel)] on win32. I am seeing the following post install errors. Could someone help me understand what going wrong? Thanks in advance. Copied pythoncom26.dll to C:\WINDOWS\system32\pythoncom26.dll Copied pythoncomloader26.dll to C:\WINDOWS\sys...


Python packaging distribute post-install step

I am packaging a project that uses nltk. When you install nltk with pip, you get core functionalitiy, but not all the modules that come with it. To get those modules, you call nltk's download method. I tried the following, but it doesn't work, saying ImportError: No module named nltk. I assume this is happening because import nltk occurs before nltk is installed by the call to setup(...).


Are all post-install options for python setuptools broken?

I'm trying to package a build of PyQt (installers aren't provided for the configuration I need), but I can't find any packaging configuration that works. The issue is not specific to PyQt though. The problem: In order for the module to work, it needs a file in python's PREFIX directory. I understand that this may be bad form, but in my case there needs to be a qt.conf file there, and there isn't anything much I c...


python - Post-install setup.py doesn't work

I'm trying to add a post-install step into the setup.py. The installation works but the code inside run(self) is never executed. Things I've tried (with no result): Install it using both "pip install (-e) ." and "python setup.py (develop)" [and later uninstall it, reinstall it, delete .egg-info folder,...] Variations using: do_egg_install, build, bdist_egg,...


python - Pip Post-install Script Interactive Input?

I'm very new to python packaging, and trying to make a pip compatible setup and post-install script for my package for colleagues. The goal of the post-install script is to create a configuration file that will be customized to the end-user and their system, and while I guess I could just have them run a secondary setup script post installation, it seems to make more sense to me to just have the setup.py script and associ...


python - setup.py post-install scripts and pip install extras

I'm developing a package which has a few optional dependencies and 'extras'. Goal: I want the following two things to work: Execute my post-install code Allow for 'extras' installation Status: Currently I have been able to: Use python setup.py install or python setup.py develop to execute post-install ...


Automating post-install of Python dependency from Git using Poetry

I'm using Poetry for Python dependency management, along with PyCrate for ASN.1 encoding/decoding. PyCrate is a dependency pulled from GitHub, and once pulled from GitHub, is installed by running a setup file within the PyCrate directory. python setup.p...


python - pipenv Post-Install Actions

I'm using Python via Pharo/GToolkit's PythonBridge, which uses pipenv under the hood. Things are kicked off via this built-in PythonBridge script (install_env.sh): #!/bin/bash cd "$(dirname "$0")" export PIPENV_VENV_IN_PROJECT=1 pipenv install pipenv ru...






Still can't find your answer? Check out these communities...



PySlackers | Full Stack Python | NHS Python | Pythonist Cafe | Hacker Earth | Discord Python



top