From time to time I come across a situation where I have a package that can depend on either package A or B.
For example, my project depends on a package called spam
, if this project is renamed to pyspam
, my project can either depend on spam
or pyspam
.
I cannot figure out (or find) how I would define such dependencies in setup.py. What is a commonly accepted way to solve this?
EDIT: I would like to define the dependencies in setup.py
. Something like this:
from setuptools import setup
setup(
name='myproject',
install_requires=[
'spam || pyspam'
]
)
Use the pipdeptree utility to gather a list of all dependencies, create a requirements. txt file listing all the dependencies, and then download them with the pip download command. Get the list of dependencies for a package from the setup.py file.
Instead, package dependencies can be seen using one of the following commands in Python: pip show: List dependencies of Python packages that have already been installed. pipdeptree: List the dependencies in a tree form. Pip list: List installed packages with various conditions.
Using venv and pipenv are two methods of managing dependencies in Python. They are simple to implement and, for most users, adequate solutions for handling multiple projects with different dependencies. However, they are not the only solutions. Other services can complement their use.
You can check to see if the package is available, and decide which to use based on that. (I hope I understood your question correctly).
from setuptools import setup
imp_spam = "spam"
try:
import spam
except:
imp_spam = "pyspam"
setup(
name='myproject',
install_requires=[imp_spam]
)
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With