{"action":"opened","issue":{"url":"https://api.github.com/repos/pypa/pip/issues/3610","repository_url":"https://api.github.com/repos/pypa/pip","labels_url":"https://api.github.com/repos/pypa/pip/issues/3610/labels{/name}","comments_url":"https://api.github.com/repos/pypa/pip/issues/3610/comments","events_url":"https://api.github.com/repos/pypa/pip/issues/3610/events","html_url":"https://github.com/pypa/pip/issues/3610","id":147115114,"number":3610,"title":"pip install from package from github, with github dependencies ","user":{"login":"dneise","id":8200858,"avatar_url":"https://avatars.githubusercontent.com/u/8200858?v=3","gravatar_id":"","url":"https://api.github.com/users/dneise","html_url":"https://github.com/dneise","followers_url":"https://api.github.com/users/dneise/followers","following_url":"https://api.github.com/users/dneise/following{/other_user}","gists_url":"https://api.github.com/users/dneise/gists{/gist_id}","starred_url":"https://api.github.com/users/dneise/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/dneise/subscriptions","organizations_url":"https://api.github.com/users/dneise/orgs","repos_url":"https://api.github.com/users/dneise/repos","events_url":"https://api.github.com/users/dneise/events{/privacy}","received_events_url":"https://api.github.com/users/dneise/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"milestone":null,"comments":0,"created_at":"2016-04-09T10:04:55Z","updated_at":"2016-04-09T10:04:55Z","closed_at":null,"body":"* Pip version: 8.1.1\r\n* Python version: python 3.5 (Anaconda)\r\n* Operating System: Ubuntu 15.10\r\n\r\n### Description:\r\n\r\nThe story goes like this: We wrote a little app *shifthelper*, which calls us on the phone, in case our experiment (a telescope on a remote island) has a problem. Then we found that part of the app, should be pulled out as a library *smart_fact_crawler*, since other apps for the same experiment might be able to use it.\r\n\r\nNeither the little app nor the little library are on pypi, since we strongly believe only about 20 people in the world can use it, which we all know. At the same time the repos are of course public github repos.\r\n\r\nWe would like to enable our non-developer friends to be able to install the app (including all dependencies) without prior explicit cloning it. Basically we want the installation to be a one-liner.\r\n\r\n**What already works**:\r\n\r\nOne can pip install the dependency first and then install the app, like this:\r\n```\r\npip install git+https://github.com/fact-project/smart_fact_crawler\r\npip install git+https://github.com/fact-project/shifthelper\r\n```\r\n\r\nOr one can clone the repo of the app only, pip install the `requirements.txt` and then pip install the app like so:\r\n```\r\ngit clone https://github.com/fact-project/shifthelper\r\npip install -r shifthelper/requirements.txt\r\npip install ./shifthelper\r\n```\r\n\r\n\r\n### What I've run:\r\n\r\nI searched the web and found the \"dependency_links\" keyword argument for `setuptools.setup()`. Although I also found comments here and there, telling that this feature is to be considered depricated and might vanish soon. \r\n\r\nSo I've put this into the `setup.py` of the app\r\n\r\n```python\r\n    # ...\r\n    install_requires=[\r\n        # ...\r\n        'smart_fact_crawler',\r\n    ],\r\n    dependency_links=[\r\n        'git+https://github.com/fact-project/smart_fact_crawler.git#egg=smart_fact_crawler'\r\n    ],\r\n    # ...\r\n```\r\n\r\nAnd tried to install the app like this:\r\n```\r\npip install git+https://github.com/fact-project/shifthelper\r\n```\r\n\r\nbut pip complained like this in friendly red letters ;-)\r\n\r\n``` \r\nCollecting smart-fact-crawler (from shifthelper==0.6.0)\r\n  Could not find a version that satisfies the requirement smart-fact-crawler (from shifthelper==0.6.0) (from versions: )\r\nNo matching distribution found for smart-fact-crawler (from shifthelper==0.6.0)\r\n``` \r\n\r\n---- \r\n\r\n### My question now is:\r\n\r\nIs maybe my entire approach wrong as in: What you are trying is not usually the way people work. You should instead try: ...\r\n\r\n----\r\n\r\n### Related SO questions are:\r\n\r\n * [1_mine](http://stackoverflow.com/questions/36501236/pip-install-python-app-from-github-with-non-pypi-dependecy)\r\n * [2](http://stackoverflow.com/questions/3472430/how-can-i-make-setuptools-install-a-package-thats-not-on-pypi)\r\n * [3](http://stackoverflow.com/questions/17366784/setuptools-unable-to-use-link-from-dependency-links/17442663#17442663)"}}