Not really. Install_requires is a setup tools/distribute feature.
On Feb 11, 2013 2:52 PM, "Erik Bernoth"
Yes, now it works! Thanks a lot! Last but not least, could you point me in the correct direction to add a patch for the distutils documentation, explaining this more clearly?
On Mon, Feb 11, 2013 at 8:34 PM, Daniel Holth
wrote: Try install_requires = [ the list you have already without () ]
Daniel
On Mon, Feb 11, 2013 at 2:32 PM, Erik Bernoth
wrote: I basically follow the tutorial in the distutils docs, which is a little unclear to me in some points.
If I do as you say it looks like this: -------------------------------------------------------------- [...] package_dir = { '' : src_path }, requires = [ 'pylibssh2==1.0.1', 'pyserial==2.5' ],provides = [ '{} ({})'.format(project, version) ] [...] -------------------------------------------------------------- And the result of ``$ python setup.py sdist`` is:
[...] # exception stack ValueError: expected parenthesized list: '==1.0.1'
That also happens if I add spaces between project name and comparator.
On Mon, Feb 11, 2013 at 8:24 PM, Daniel Holth
wrote: This is a common mistake. The parenthesis are a Metadata 1.2+ thing. Omit them for distutils.
On Mon, Feb 11, 2013 at 2:22 PM, Erik Bernoth
wrote: On Mon, Feb 11, 2013 at 8:07 PM, Daniel Holth
wrote: On Mon, Feb 11, 2013 at 1:10 PM, Erik Bernoth
wrote: > Hi everybody, > > I think I pretty much read all of the > http://docs.python.org/2/distutils/ and started to create a pypi > repository for my project (http://pypi.python.org/pypi/monk_tf). > Now there are some things that are not so clear from the documentation, > with the most important being requirement handling. > > I have the same requirements written down in two ways: > a) a requirements.txt file, which can be called with pip install -r > requirements.txt. Yet I don't see any user downloading a requirements.txt > file from somewhere, then installing it and only then afterwards getting > started with actually installing the package they want to install. Who > would do that? > > b) requires attribute in the setup function call in setup.py. For > some reason pip completely seems to ignore it. I tested the following way > (come along with the code from https://github.com/DFE/MONK, if you > like): > > $ cd MONK > $ python setup.py sdist > $ cd dist > $ tar xfvz monk_tf-v0.1.1.tar.gz > $ cd monk_tf-v0.1.1 > $ python setup.py install > running install > running build > running build_py > running install_lib > running install_egg_info > Writing > /usr/local/lib/python2.7/dist-packages/monk_tf-v0.1.1.egg-info > $python > >> import monk_tf > (Exception, because a required package can't be found) > > So this also didn't seem to install any of the required packages. > > I'd really like to know, what I am doing wrong here. Anybody ideas > or suggestions? Is there another way to tell distutils about the packages > that should be installed before my package is installed? > > Cheers > Erik >
Generally requires.txt is for specific versions of dependencies and the setup.py list is more permissive.
Try using pip to install your sdist instead of running setup.py directly.
Hi Daniel,
I also tried ``pip install monk_tf-v0.1.1.tar.gz``, with the same result as using setup.py directly. He installs it but doesn't consider the "requires" list. From your mail I would interprete that distutils actually should consider the required packages? Maybe I just wrote something incorrectly. Does the following look like a correct statements of the requires parameter? -------------------------------------------------------------- [...] package_dir = { '' : src_path }, requires = [ 'pylibssh2 (==1.0.1)', 'pyserial (==2.5)' ],provides = [ '{} ({})'.format(project, version) ] [...] --------------------------------------------------------------
Cheers Erik