[Distutils] Telling distutils about requirements
Erik Bernoth
erik.bernoth at gmail.com
Mon Feb 11 20:32:35 CET 2013
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/6db27791/attachment-0001.html>
More information about the Distutils-SIG
mailing list