[Distutils] Telling distutils about requirements

Daniel Holth dholth at gmail.com
Mon Feb 11 20:34:29 CET 2013


Try install_requires = [ the list you have already without () ]

Daniel


On Mon, Feb 11, 2013 at 2:32 PM, Erik Bernoth <erik.bernoth at gmail.com>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 <dholth at gmail.com> 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 <erik.bernoth at gmail.com>wrote:
>>
>>>
>>> On Mon, Feb 11, 2013 at 8:07 PM, Daniel Holth <dholth at gmail.com> wrote:
>>>
>>>> On Mon, Feb 11, 2013 at 1:10 PM, Erik Bernoth <erik.bernoth at gmail.com>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
>>>
>>
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/distutils-sig/attachments/20130211/9b08d43d/attachment.html>


More information about the Distutils-SIG mailing list