Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP

Loading…

Allow to specify per-line --install-option in requirements.txt #271

Closed
dgerzo opened this Issue · 53 comments
@dgerzo

Hello,

This is a feature request, which would allow people to configure a per-line --install-option in requirements.txt for individual packages. This is needed for example when the installation of the package listed in requirements txt needs additional options, like in case of pylibmc, where I need to pass --install-option="--with-libmemcached=/usr/local" on FreeBSD systems.

Passing --install-option="--with-libmemcached=/usr/local" to the pip install -r requirements.txt is a no-go as that makes other packages fail with an unknown option. This is something that makes it difficult to use pip on automated deployments.

Thanks!

@douglatornell

+1

I have exactly the same issue on OpenBSD deployments. Glad I checked before I wrote what would have been a duplicate enhancement request.

@daybarr

+1

I asked how to get around this limitation on StackOverflow: http://stackoverflow.com/q/8874638/445073

As well as allowing manual addition of --install-option to the requirements.txt, it would be nice to maintain the round-trip ability by having pip install "remember" what install-options were used, so pip freeze can then write the --install-option back to the requirements.txt so it isn't lost when adding new packages or upgrading existing ones.

@fjollberg

+1 I have exactly the same issue as daybarr above.

@kwill

+1 (although I wish github had an option to show support without having to add a +1 comment - is there a feature request for this somewhere that I could add a +1 comment to?)

@urbushey

+1

This would be a great feature!!!

@conrado

+1

@carljm
Owner

This is a reasonable feature, pull request welcome.

@conrado conrado referenced this issue from a commit
Commit has since been removed from the repository and is no longer available.
@mitar

+1

@nethi

+1

@gthomas

+1

@richg

+1

@obeattie

+1 (why oh why does GitHub not have a "plus one" feature)

@qwcode
Owner

Hello, I'm a pip maintainer and agree this is important. 1.3 is due out very soon, so it won't be in that, but it's very much on the radar for 1.4.

@edwelker

Awesome, thanks. +1 also.

@gvalkov

I'll have a go at this, but lets agree on a format first. Maybe:

# All args after '--' will be consumed and used for '--install-options'
pylibmc -- --with-libmemcached=/usr/local
# ... or more explicitly
pylibmc --install-options --with-libmemcached=/usr/local

There is also the matter of how -r --requirement lines should be handled.Should --install-options be recursively applied to all requirements in the requirement file? What if the requirements file sets install options of its own?

-r url://to/requirements.txt -- --with-libmemcached=/usr/local

Maybe I should also add line continuations to the requirement file parser?

pylibc==1.0.1 --install-options \
              --with-libmemcached=/usr/local \
              --prefix=/home/gv/.local \
              --bindir=/home/gv/.bin
distribute
@qwcode
Owner

I think this:

someproject==1.2 --install-option='...'

this allows us to support other options later if need be, w/o confusion.

-r url://to/requirements.txt -- --with-libmemcached=/usr/local

I'd say don't bother supporting that now. they can add the options into the lines in that file.

as for continuations, I'm open to that, but certainly not critical for this. I'd rather that be done separate.

@edwelker

Agree with everything @qwcode just said.

@phu
phu commented

+1 Also running into this. Will be excellent when pip supports it; for now using a sort of workaround found in the comments here:
http://stackoverflow.com/questions/8874638/how-to-maintain-pip-install-options-in-requirements-file-made-by-pip-freeze

@jaytaylor

+1 this is a considerable pain in the ass

@qwcode
Owner

understood, @gvalkov 's PR is in the 1.5 milestone (i.e. the next release)

@guilload

+1

@MiCHiLU

+1

I need --install-option=--static-deps option for installing lxml on Mac OS X 10.7

@munhitsu

+1 to make graphite users happier

@Almad

+1 for --egg with scons, otherwise uninstallable on heroku

@yxw

+1

@edwardotis

+1 causing problems installing to heroku without this.

@granda

+1

@ccemeraldeyes

+1 how is this still not fixed?

@jaytaylor

@Ivoz I thought a fix for this was coming up in the 1.5 milestone..

@qwcode How long until the 1.5 milestone becomes reality?

@qwcode
Owner

@jaytaylor you got me. 1.5 is passed. didn't happen. btw, PR #790 was very close, but needs freshening at this point.

@bepetersn

+1 still to this, and hoping someone takes it on soon.

@RaviH

+1

Hi, do we know if there is any traction on this? Would this be available for Python 2.7 or would it only be available with later versions of Python?

@hangtwenty

been a couple of months so - :+1:

@darKoram

+1
Thread started april 2011!

@jaytaylor

It's been 5 months, so..

+1

@jbeezley jbeezley referenced this issue in girder/girder
Merged

Improvements to setup.py #561

@svisser

+1

@juztin

+1

@boyonwheels

+1 I have this issue with python-ldap on freebsd.

@ahammond

+1 salt wants --salt-transport=raet

@vlotorev vlotorev referenced this issue in trezor/cython-hidapi
Open

make libusb optional on linux #9

@pfmoore
Owner

There have been a lot of +1 comments on this, but until someone comes up with a PR, it's probably not going to go very far. Do any of the people commenting +1 have the time to work up a PR? Even a first draft that needs some help to polish would be good.

@gvalkov
@pfmoore
Owner

I agree with the comments @qwcode made on the design (don't bother allowing --install-options on -r lines, don't bother with the "anything after --" implicit approach, and leave line continuation to a separate PR). But otherwise this looks OK. I'm not 100% clear on where #790 stands on this matter, but assuming it takes those points into consideration, I'll review it once it's rebased.

@msabramo

#2537 seems to be progressing nicely.

@johnyf

+1

@gvalkov

Hello everyone,

This functionality is now available in PR #2537 and is being considered for inclusion by the pip core team. They've been extremely helpful in reviewing and straightening out some of the loose ends.

Judging by the number of +1s in this thread, I imagine that a lot of you already have a specific use case in mind for this feature. If you happen to have the time, would you consider testing PR #2537?

Here's a quick way of getting the development version of pip + my feature branch:

$ git clone https://github.com/pypa/pip.git && cd pip
$ git fetch origin pull/2537/head:reqfileopts
$ git checkout reqfileopts
$ python -m pip <command> 

Please refer to the per-requirement overrides section for usage information. For example, to install salt with the --salt-transport=raet option from a requirements file:

$ cat > requirements-with-opts.txt <<EOF
salt --global-option="--salt-transport=raet"
EOF
$ python -m pip install -r requirements-with-opts.txt

Thanks,
Georgi

@conrado

Georgi, did you reference the right PR? I think you meant #2537

@gvalkov

Certainly. Thank you for the catch, @conrado.

@qwcode
Owner

closed via #2537

@qwcode qwcode closed this
@doutriaux1 doutriaux1 referenced this issue in UV-CDAT/uvcdat
Closed

SciPy fails to build on CentOS 6.6 #1192

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Something went wrong with that request. Please try again.