Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

pipenv install fails on proprietary package not available on pypi #1882

Closed
wooyek opened this issue Mar 29, 2018 · 8 comments
Closed

pipenv install fails on proprietary package not available on pypi #1882

wooyek opened this issue Mar 29, 2018 · 8 comments

Comments

@wooyek
Copy link

wooyek commented Mar 29, 2018

I would like to install a company proprietary internal package that is shipped with the project. Is only available in a folder relative to the project root and it's absolute path may vary between environments.

This is at least connected to #958 and #914

Expected result

That the package multiinfo would be installed and put in the Pipfile in a way that can be used on production environment.

Steps to replicate
  1. Create a non-published not generally available python package,
  2. Create a dist python setup.py bdist_wheel
  3. Install resulting wheel with pipenv
Actual result
$ pipenv install --verbose requirements/local/multiinfo-0.1.0-py2.py3-none-any.whl
$ /data/work/company/project $ pipenv install --verbose requirements/local/multiinfo-0.1.0-py2.py3-none-any.whl
Courtesy Notice: Pipenv found itself running within a virtual environment, so it will automatically use that environment, instead of creating its own for any project.
Installing requirements/local/multiinfo-0.1.0-py2.py3-none-any.whl…
⠋Installing 'requirements/local/multiinfo-0.1.0-py2.py3-none-any.whl'
$ "/home/janusz/.local/venvs/project/bin/pip" install   --verbose    "requirements/local/multiinfo-0.1.0-py2.py3-none-any.whl" -i https://pypi.python.org/simple --exists-action w
Requirement already satisfied: multiinfo==0.1.0 from file:///data/work/company/project/requirements/local/multiinfo-0.1.0-py2.py3-none-any.whl in /home/janusz/.local/venvs/project/lib/python3.5/site-packages
Requirement already satisfied: click in /home/janusz/.local/venvs/project/lib/python3.5/site-packages (from multiinfo==0.1.0)
Requirement already satisfied: dynaconf in /home/janusz/.local/venvs/project/lib/python3.5/site-packages (from multiinfo==0.1.0)
Requirement already satisfied: requests in /home/janusz/.local/venvs/project/lib/python3.5/site-packages (from multiinfo==0.1.0)
Requirement already satisfied: envparse in /home/janusz/.local/venvs/project/lib/python3.5/site-packages (from multiinfo==0.1.0)
Requirement already satisfied: python-box in /home/janusz/.local/venvs/project/lib/python3.5/site-packages (from multiinfo==0.1.0)
Requirement already satisfied: six in /home/janusz/.local/venvs/project/lib/python3.5/site-packages (from multiinfo==0.1.0)
Requirement already satisfied: pyyaml in /home/janusz/.local/venvs/project/lib/python3.5/site-packages (from multiinfo==0.1.0)
Requirement already satisfied: idna<2.7,>=2.5 in /home/janusz/.local/venvs/project/lib/python3.5/site-packages (from requests->multiinfo==0.1.0)
Requirement already satisfied: certifi>=2017.4.17 in /home/janusz/.local/venvs/project/lib/python3.5/site-packages (from requests->multiinfo==0.1.0)
Requirement already satisfied: chardet<3.1.0,>=3.0.2 in /home/janusz/.local/venvs/project/lib/python3.5/site-packages (from requests->multiinfo==0.1.0)
Requirement already satisfied: urllib3<1.23,>=1.21.1 in /home/janusz/.local/venvs/project/lib/python3.5/site-packages (from requests->multiinfo==0.1.0)
Cleaning up...

Adding requirements/local/multiinfo-0.1.0-py2.py3-none-any.whl to Pipfile's [packages]…
Pipfile.lock not found, creating…
Locking [dev-packages] dependencies…
Using pip: -i https://pypi.python.org/simple

                          ROUND 1                           
Current constraints:
  bump2version
  check-manifest
  codecov
  coverage
  detox
  django-environ
  docutils==0.13.1
  enum34
  factory_boy
  file:///data/work/company/project
  flake8
  invoke
  isort
  mock
  pathlib
  psycopg2
  pyenchant
  Pygments
  pytest
  pytest-cov
  pytest-django
  pytest-html
  pytest-mock
  pytest-sugar
  pytest-xdist
  python-coveralls
  PyYAML
  readme_renderer
  Sphinx>=1.6.5
  sphinx_rtd_theme
  sphinxcontrib-spelling
  tox
  yuicompressor

Finding the best candidates:
  found candidate bump2version==0.5.7 (constraint was <any>)
  found candidate check-manifest==0.36 (constraint was <any>)
  found candidate codecov==2.0.15 (constraint was <any>)
  found candidate coverage==4.5.1 (constraint was <any>)
  found candidate detox==0.11 (constraint was <any>)
  found candidate django-environ==0.4.4 (constraint was <any>)
  found candidate docutils==0.13.1 (constraint was ==0.13.1)
  found candidate enum34==1.1.6 (constraint was <any>)
  found candidate factory-boy==2.10.0 (constraint was <any>)
  found candidate -e file:///data/work/company/project (constraint was <any>)
  found candidate flake8==3.5.0 (constraint was <any>)
  found candidate invoke==0.22.1 (constraint was <any>)
  found candidate isort==4.3.4 (constraint was <any>)
  found candidate mock==2.0.0 (constraint was <any>)
  found candidate pathlib==1.0.1 (constraint was <any>)
  found candidate psycopg2==2.7.4 (constraint was <any>)
  found candidate pyenchant==2.0.0 (constraint was <any>)
  found candidate pygments==2.2.0 (constraint was <any>)
  found candidate pytest==3.5.0 (constraint was <any>)
  found candidate pytest-cov==2.5.1 (constraint was <any>)
  found candidate pytest-django==3.1.2 (constraint was <any>)
  found candidate pytest-html==1.16.1 (constraint was <any>)
  found candidate pytest-mock==1.7.1 (constraint was <any>)
  found candidate pytest-sugar==0.9.1 (constraint was <any>)
  found candidate pytest-xdist==1.22.2 (constraint was <any>)
  found candidate python-coveralls==2.9.1 (constraint was <any>)
  found candidate pyyaml==3.12 (constraint was <any>)
  found candidate readme-renderer==17.4 (constraint was <any>)
  found candidate sphinx==1.7.2 (constraint was >=1.6.5)
  found candidate sphinx-rtd-theme==0.2.4 (constraint was <any>)
  found candidate sphinxcontrib-spelling==4.1.0 (constraint was <any>)
  found candidate tox==2.9.1 (constraint was <any>)
  found candidate yuicompressor==2.4.8 (constraint was <any>)

Finding secondary dependencies:
  docutils==0.13.1          requires -
  pytest==3.5.0             requires attrs>=17.4.0, more-itertools>=4.0.0, pluggy<0.7,>=0.5, py>=1.5.0, setuptools, six>=1.10.0
  pathlib==1.0.1            requires -
  detox==0.11               requires eventlet>=0.15.0, py>=1.4.27, tox<3.0.0,>=2.0.0
  invoke==0.22.1            requires -
  pytest-html==1.16.1       requires pytest-metadata, pytest>=3.0
  django-environ==0.4.4     requires django, six
  readme-renderer==17.4     requires bleach>=2.1.0, commonmark>=0.7.4, docutils>=0.13.1, Pygments, six
  enum34==1.1.6             requires -
  pytest-xdist==1.22.2      requires execnet>=1.1, pytest-forked, pytest>=3.0.0
  pytest-cov==2.5.1         requires coverage>=3.7.1, pytest>=2.6.0
  bump2version==0.5.7       requires -
  pyyaml==3.12              requires -
  isort==4.3.4              requires -
  psycopg2==2.7.4           requires -
  check-manifest==0.36      requires -
  mock==2.0.0               requires pbr>=0.11, six>=1.9
  sphinxcontrib-spelling==4.1.0 requires PyEnchant>=1.6.5, six, Sphinx>=0.6
  pygments==2.2.0           requires -
  pytest-mock==1.7.1        requires pytest>=2.7
  pyenchant==2.0.0          requires -
  pytest-django==3.1.2      requires pytest>=2.9
  sphinx==1.7.2             requires alabaster<0.8,>=0.7, babel!=2.0,>=1.3, docutils>=0.11, imagesize, Jinja2>=2.3, packaging, Pygments>=2.0, requests>=2.0.0, setuptools, six>=1.5, snowballstemmer>=1.1, sphinxcontrib-websupport
  tox==2.9.1                requires pluggy<1.0,>=0.3.0, py>=1.4.17, six, virtualenv>=1.11.2; python_version != "3.2"
  factory-boy==2.10.0       requires Faker>=0.7.0
  pytest-sugar==0.9.1       requires pytest>=2.9, termcolor>=1.1.0
  yuicompressor==2.4.8      requires -
  sphinx-rtd-theme==0.2.4   requires -
  coverage==4.5.1           requires -
  flake8==3.5.0             requires mccabe<0.7.0,>=0.6.0, pycodestyle<2.4.0,>=2.0.0, pyflakes<1.7.0,>=1.5.0
  python-coveralls==2.9.1   requires coverage==4.0.3, PyYAML, requests, six
  codecov==2.0.15           requires coverage, requests>=2.7.9

New dependencies found in this round:
  adding ['alabaster', '<0.8,>=0.7', '[]']
  adding ['attrs', '>=17.4.0', '[]']
  adding ['babel', '!=2.0,>=1.3', '[]']
  adding ['bleach', '>=2.1.0', '[]']
  adding ['celery', '', '[]']
  adding ['click', '', '[]']
  adding ['commonmark', '>=0.7.4', '[]']
  adding ['coverage', '==4.0.3,>=3.7.1', '[]']
  adding ['django', '>=2.0', '[]']
  adding ['django-assets', '', '[]']
  adding ['django-bootstrap-form', '', '[]']
  adding ['django-debug-toolbar', '', '[]']
  adding ['django-email-queue', '', '[]']
  adding ['django-environ', '', '[]']
  adding ['django-error-views', '', '[]']
  adding ['django-formtools', '', '[]']
  adding ['django-import-export', '', '[]']
  adding ['django-opt-out', '', "['sparkpost']"]
  adding ['django-pascal-templates', '', '[]']
  adding ['django-powerbank', '', '[]']
  adding ['django-reversion', '', '[]']
  adding ['docutils', '>=0.11,>=0.13.1', '[]']
  adding ['enum34', '', '[]']
  adding ['eventlet', '>=0.15.0', '[]']
  adding ['execnet', '>=1.1', '[]']
  adding ['faker', '>=0.7.0', '[]']
  adding ['gunicorn', '', '[]']
  adding ['html2text', '', '[]']
  adding ['imagesize', '', '[]']
  adding ['jinja2', '>=2.3', '[]']
  adding ['mccabe', '<0.7.0,>=0.6.0', '[]']
  adding ['more-itertools', '>=4.0.0', '[]']
  adding ['multiinfo', '', '[]']
  adding ['newrelic', '', '[]']
  adding ['packaging', '', '[]']
  adding ['pbr', '>=0.11', '[]']
  adding ['pluggy', '<0.7,<1.0,>=0.3.0,>=0.5', '[]']
  adding ['psycopg2-binary', '', '[]']
  adding ['py', '>=1.4.17,>=1.4.27,>=1.5.0', '[]']
  adding ['pycodestyle', '<2.4.0,>=2.0.0', '[]']
  adding ['pycountry', '', '[]']
  adding ['pyenchant', '>=1.6.5', '[]']
  adding ['pyflakes', '<1.7.0,>=1.5.0', '[]']
  adding ['pygments', '>=2.0', '[]']
  adding ['pytest', '>=2.6.0,>=2.7,>=2.9,>=3.0,>=3.0.0', '[]']
  adding ['pytest-forked', '', '[]']
  adding ['pytest-metadata', '', '[]']
  adding ['pytz', '', '[]']
  adding ['pyyaml', '', '[]']
  adding ['raven', '', '[]']
  adding ['requests', '>=2.0.0,>=2.7.9', '[]']
  adding ['six', '>=1.10.0,>=1.5,>=1.9', '[]']
  adding ['snowballstemmer', '>=1.1', '[]']
  adding ['sphinx', '>=0.6', '[]']
  adding ['sphinxcontrib-websupport', '', '[]']
  adding ['termcolor', '>=1.1.0', '[]']
  adding ['tox', '<3.0.0,>=2.0.0', '[]']
  adding ['virtualenv', '>=1.11.2', '[]']
  adding ['whitenoise', '', '[]']
Removed dependencies in this round:
Unsafe dependencies in this round:
------------------------------------------------------------
Result of round 1: not stable

                          ROUND 2                           
Current constraints:
  alabaster<0.8,>=0.7
  attrs>=17.4.0
  babel!=2.0,>=1.3
  bleach>=2.1.0
  bump2version
  celery
  check-manifest
  click
  codecov
  commonmark>=0.7.4
  coverage==4.0.3,>=3.7.1
  detox
  django>=2.0
  django-assets
  django-bootstrap-form
  django-debug-toolbar
  django-email-queue
  django-environ
  django-error-views
  django-formtools
  django-import-export
  django-opt-out[sparkpost]
  django-pascal-templates
  django-powerbank
  django-reversion
  docutils==0.13.1,>=0.11,>=0.13.1
  enum34
  eventlet>=0.15.0
  execnet>=1.1
  factory_boy
  Faker>=0.7.0
  flake8
  gunicorn
  html2text
  imagesize
  invoke
  isort
  Jinja2>=2.3
  mccabe<0.7.0,>=0.6.0
  mock
  more-itertools>=4.0.0
  multiinfo
  newrelic
  packaging
  pathlib
  pbr>=0.11
  project==0.10.23 from file:///data/work/company/project
  pluggy<0.7,<1.0,>=0.3.0,>=0.5
  psycopg2
  psycopg2-binary
  py>=1.4.17,>=1.4.27,>=1.5.0
  pycodestyle<2.4.0,>=2.0.0
  pycountry
  pyenchant>=1.6.5
  pyflakes<1.7.0,>=1.5.0
  Pygments>=2.0
  pytest>=2.6.0,>=2.7,>=2.9,>=3.0,>=3.0.0
  pytest-cov
  pytest-django
  pytest-forked
  pytest-html
  pytest-metadata
  pytest-mock
  pytest-sugar
  pytest-xdist
  python-coveralls
  pytz
  PyYAML
  raven
  readme_renderer
  requests>=2.0.0,>=2.7.9
  six>=1.10.0,>=1.5,>=1.9
  snowballstemmer>=1.1
  Sphinx>=0.6,>=1.6.5
  sphinx_rtd_theme
  sphinxcontrib-spelling
  sphinxcontrib-websupport
  termcolor>=1.1.0
  tox<3.0.0,>=2.0.0
  virtualenv>=1.11.2
  whitenoise
  yuicompressor

Finding the best candidates:
  found candidate alabaster==0.7.10 (constraint was >=0.7,<0.8)
  found candidate attrs==17.4.0 (constraint was >=17.4.0)
  found candidate babel==2.5.3 (constraint was >=1.3,!=2.0)
  found candidate bleach==2.1.3 (constraint was >=2.1.0)
  found candidate bump2version==0.5.7 (constraint was <any>)
  found candidate celery==4.1.0 (constraint was <any>)
  found candidate check-manifest==0.36 (constraint was <any>)
  found candidate click==6.7 (constraint was <any>)
  found candidate codecov==2.0.15 (constraint was <any>)
  found candidate commonmark==0.7.5 (constraint was >=0.7.4)
  found candidate coverage==4.0.3 (constraint was >=3.7.1,==4.0.3)
  found candidate detox==0.11 (constraint was <any>)
  found candidate django==2.0.3 (constraint was >=2.0)
  found candidate django-assets==0.12 (constraint was <any>)
  found candidate django-bootstrap-form==3.4 (constraint was <any>)
  found candidate django-debug-toolbar==1.9.1 (constraint was <any>)
  found candidate django-email-queue==0.14.0 (constraint was <any>)
  found candidate django-environ==0.4.4 (constraint was <any>)
  found candidate django-error-views==0.4.0 (constraint was <any>)
  found candidate django-formtools==2.1 (constraint was <any>)
  found candidate django-import-export==1.0.0 (constraint was <any>)
  found candidate django-opt-out[sparkpost]==0.9.1 (constraint was <any>)
  found candidate django-pascal-templates==0.8.12 (constraint was <any>)
  found candidate django-powerbank==0.3.5 (constraint was <any>)
  found candidate django-reversion==2.0.13 (constraint was <any>)
  found candidate docutils==0.13.1 (constraint was >=0.11,>=0.13.1,==0.13.1)
  found candidate enum34==1.1.6 (constraint was <any>)
  found candidate eventlet==0.22.1 (constraint was >=0.15.0)
  found candidate execnet==1.5.0 (constraint was >=1.1)
  found candidate factory-boy==2.10.0 (constraint was <any>)
  found candidate faker==0.8.12 (constraint was >=0.7.0)
  found candidate flake8==3.5.0 (constraint was <any>)
  found candidate gunicorn==19.7.1 (constraint was <any>)
  found candidate html2text==2018.1.9 (constraint was <any>)
  found candidate imagesize==1.0.0 (constraint was <any>)
  found candidate invoke==0.22.1 (constraint was <any>)
  found candidate isort==4.3.4 (constraint was <any>)
  found candidate jinja2==2.10 (constraint was >=2.3)
  found candidate mccabe==0.6.1 (constraint was >=0.6.0,<0.7.0)
  found candidate mock==2.0.0 (constraint was <any>)
  found candidate more-itertools==4.1.0 (constraint was >=4.0.0)
Please check your version specifier and version number. See PEP440 for more information.
Using pip: -i https://pypi.python.org/simple

                          ROUND 1                           
Current constraints:
  bump2version
  check-manifest
  codecov
  coverage
  detox
  django-environ
  docutils==0.13.1
  enum34
  factory_boy
  file:///data/work/company/project
  flake8
  invoke
  isort
  mock
  pathlib
  psycopg2
  pyenchant
  Pygments
  pytest
  pytest-cov
  pytest-django
  pytest-html
  pytest-mock
  pytest-sugar
  pytest-xdist
  python-coveralls
  PyYAML
  readme_renderer
  Sphinx>=1.6.5
  sphinx_rtd_theme
  sphinxcontrib-spelling
  tox
  yuicompressor

Finding the best candidates:
  found candidate bump2version==0.5.7 (constraint was <any>)
  found candidate check-manifest==0.36 (constraint was <any>)
  found candidate codecov==2.0.15 (constraint was <any>)
  found candidate coverage==4.5.1 (constraint was <any>)
  found candidate detox==0.11 (constraint was <any>)
  found candidate django-environ==0.4.4 (constraint was <any>)
  found candidate docutils==0.13.1 (constraint was ==0.13.1)
  found candidate enum34==1.1.6 (constraint was <any>)
  found candidate factory-boy==2.10.0 (constraint was <any>)
  found candidate -e file:///data/work/company/project (constraint was <any>)
  found candidate flake8==3.5.0 (constraint was <any>)
  found candidate invoke==0.22.1 (constraint was <any>)
  found candidate isort==4.3.4 (constraint was <any>)
  found candidate mock==2.0.0 (constraint was <any>)
  found candidate pathlib==1.0.1 (constraint was <any>)
  found candidate psycopg2==2.7.4 (constraint was <any>)
  found candidate pyenchant==2.0.0 (constraint was <any>)
  found candidate pygments==2.2.0 (constraint was <any>)
  found candidate pytest==3.5.0 (constraint was <any>)
  found candidate pytest-cov==2.5.1 (constraint was <any>)
  found candidate pytest-django==3.1.2 (constraint was <any>)
  found candidate pytest-html==1.16.1 (constraint was <any>)
  found candidate pytest-mock==1.7.1 (constraint was <any>)
  found candidate pytest-sugar==0.9.1 (constraint was <any>)
  found candidate pytest-xdist==1.22.2 (constraint was <any>)
  found candidate python-coveralls==2.9.1 (constraint was <any>)
  found candidate pyyaml==3.12 (constraint was <any>)
  found candidate readme-renderer==17.4 (constraint was <any>)
  found candidate sphinx==1.7.2 (constraint was >=1.6.5)
  found candidate sphinx-rtd-theme==0.2.4 (constraint was <any>)
  found candidate sphinxcontrib-spelling==4.1.0 (constraint was <any>)
  found candidate tox==2.9.1 (constraint was <any>)
  found candidate yuicompressor==2.4.8 (constraint was <any>)

Finding secondary dependencies:
  factory-boy==2.10.0       requires Faker>=0.7.0
  detox==0.11               requires eventlet>=0.15.0, py>=1.4.27, tox<3.0.0,>=2.0.0
  django-environ==0.4.4     requires django, six
  tox==2.9.1                requires pluggy<1.0,>=0.3.0, py>=1.4.17, six, virtualenv>=1.11.2; python_version != "3.2"
  enum34==1.1.6             requires -
  yuicompressor==2.4.8      requires -
  codecov==2.0.15           requires coverage, requests>=2.7.9
  pytest-html==1.16.1       requires pytest-metadata, pytest>=3.0
  isort==4.3.4              requires -
  python-coveralls==2.9.1   requires coverage==4.0.3, PyYAML, requests, six
  pyyaml==3.12              requires -
  pytest-django==3.1.2      requires pytest>=2.9
  pyenchant==2.0.0          requires -
  pytest==3.5.0             requires attrs>=17.4.0, more-itertools>=4.0.0, pluggy<0.7,>=0.5, py>=1.5.0, setuptools, six>=1.10.0
  check-manifest==0.36      requires -
  readme-renderer==17.4     requires bleach>=2.1.0, commonmark>=0.7.4, docutils>=0.13.1, Pygments, six
  sphinx==1.7.2             requires alabaster<0.8,>=0.7, babel!=2.0,>=1.3, docutils>=0.11, imagesize, Jinja2>=2.3, packaging, Pygments>=2.0, requests>=2.0.0, setuptools, six>=1.5, snowballstemmer>=1.1, sphinxcontrib-websupport
  flake8==3.5.0             requires mccabe<0.7.0,>=0.6.0, pycodestyle<2.4.0,>=2.0.0, pyflakes<1.7.0,>=1.5.0
  mock==2.0.0               requires pbr>=0.11, six>=1.9
  docutils==0.13.1          requires -
  pathlib==1.0.1            requires -
  pytest-sugar==0.9.1       requires pytest>=2.9, termcolor>=1.1.0
  psycopg2==2.7.4           requires -
  pytest-cov==2.5.1         requires coverage>=3.7.1, pytest>=2.6.0
  pygments==2.2.0           requires -
  pytest-xdist==1.22.2      requires execnet>=1.1, pytest-forked, pytest>=3.0.0
  coverage==4.5.1           requires -
  bump2version==0.5.7       requires -
  pytest-mock==1.7.1        requires pytest>=2.7
  sphinxcontrib-spelling==4.1.0 requires PyEnchant>=1.6.5, six, Sphinx>=0.6
  sphinx-rtd-theme==0.2.4   requires -
  invoke==0.22.1            requires -

New dependencies found in this round:
  adding ['alabaster', '<0.8,>=0.7', '[]']
  adding ['attrs', '>=17.4.0', '[]']
  adding ['babel', '!=2.0,>=1.3', '[]']
  adding ['bleach', '>=2.1.0', '[]']
  adding ['celery', '', '[]']
  adding ['click', '', '[]']
  adding ['commonmark', '>=0.7.4', '[]']
  adding ['coverage', '==4.0.3,>=3.7.1', '[]']
  adding ['django', '>=2.0', '[]']
  adding ['django-assets', '', '[]']
  adding ['django-bootstrap-form', '', '[]']
  adding ['django-debug-toolbar', '', '[]']
  adding ['django-email-queue', '', '[]']
  adding ['django-environ', '', '[]']
  adding ['django-error-views', '', '[]']
  adding ['django-formtools', '', '[]']
  adding ['django-import-export', '', '[]']
  adding ['django-opt-out', '', "['sparkpost']"]
  adding ['django-pascal-templates', '', '[]']
  adding ['django-powerbank', '', '[]']
  adding ['django-reversion', '', '[]']
  adding ['docutils', '>=0.11,>=0.13.1', '[]']
  adding ['enum34', '', '[]']
  adding ['eventlet', '>=0.15.0', '[]']
  adding ['execnet', '>=1.1', '[]']
  adding ['faker', '>=0.7.0', '[]']
  adding ['gunicorn', '', '[]']
  adding ['html2text', '', '[]']
  adding ['imagesize', '', '[]']
  adding ['jinja2', '>=2.3', '[]']
  adding ['mccabe', '<0.7.0,>=0.6.0', '[]']
  adding ['more-itertools', '>=4.0.0', '[]']
  adding ['multiinfo', '', '[]']
  adding ['newrelic', '', '[]']
  adding ['packaging', '', '[]']
  adding ['pbr', '>=0.11', '[]']
  adding ['pluggy', '<0.7,<1.0,>=0.3.0,>=0.5', '[]']
  adding ['psycopg2-binary', '', '[]']
  adding ['py', '>=1.4.17,>=1.4.27,>=1.5.0', '[]']
  adding ['pycodestyle', '<2.4.0,>=2.0.0', '[]']
  adding ['pycountry', '', '[]']
  adding ['pyenchant', '>=1.6.5', '[]']
  adding ['pyflakes', '<1.7.0,>=1.5.0', '[]']
  adding ['pygments', '>=2.0', '[]']
  adding ['pytest', '>=2.6.0,>=2.7,>=2.9,>=3.0,>=3.0.0', '[]']
  adding ['pytest-forked', '', '[]']
  adding ['pytest-metadata', '', '[]']
  adding ['pytz', '', '[]']
  adding ['pyyaml', '', '[]']
  adding ['raven', '', '[]']
  adding ['requests', '>=2.0.0,>=2.7.9', '[]']
  adding ['six', '>=1.10.0,>=1.5,>=1.9', '[]']
  adding ['snowballstemmer', '>=1.1', '[]']
  adding ['sphinx', '>=0.6', '[]']
  adding ['sphinxcontrib-websupport', '', '[]']
  adding ['termcolor', '>=1.1.0', '[]']
  adding ['tox', '<3.0.0,>=2.0.0', '[]']
  adding ['virtualenv', '>=1.11.2', '[]']
  adding ['whitenoise', '', '[]']
Removed dependencies in this round:
Unsafe dependencies in this round:
------------------------------------------------------------
Result of round 1: not stable

                          ROUND 2                           
Current constraints:
  alabaster<0.8,>=0.7
  attrs>=17.4.0
  babel!=2.0,>=1.3
  bleach>=2.1.0
  bump2version
  celery
  check-manifest
  click
  codecov
  commonmark>=0.7.4
  coverage==4.0.3,>=3.7.1
  detox
  django>=2.0
  django-assets
  django-bootstrap-form
  django-debug-toolbar
  django-email-queue
  django-environ
  django-error-views
  django-formtools
  django-import-export
  django-opt-out[sparkpost]
  django-pascal-templates
  django-powerbank
  django-reversion
  docutils==0.13.1,>=0.11,>=0.13.1
  enum34
  eventlet>=0.15.0
  execnet>=1.1
  factory_boy
  Faker>=0.7.0
  flake8
  gunicorn
  html2text
  imagesize
  invoke
  isort
  Jinja2>=2.3
  mccabe<0.7.0,>=0.6.0
  mock
  more-itertools>=4.0.0
  multiinfo
  newrelic
  packaging
  pathlib
  pbr>=0.11
  project==0.10.23 from file:///data/work/company/project
  pluggy<0.7,<1.0,>=0.3.0,>=0.5
  psycopg2
  psycopg2-binary
  py>=1.4.17,>=1.4.27,>=1.5.0
  pycodestyle<2.4.0,>=2.0.0
  pycountry
  pyenchant>=1.6.5
  pyflakes<1.7.0,>=1.5.0
  Pygments>=2.0
  pytest>=2.6.0,>=2.7,>=2.9,>=3.0,>=3.0.0
  pytest-cov
  pytest-django
  pytest-forked
  pytest-html
  pytest-metadata
  pytest-mock
  pytest-sugar
  pytest-xdist
  python-coveralls
  pytz
  PyYAML
  raven
  readme_renderer
  requests>=2.0.0,>=2.7.9
  six>=1.10.0,>=1.5,>=1.9
  snowballstemmer>=1.1
  Sphinx>=0.6,>=1.6.5
  sphinx_rtd_theme
  sphinxcontrib-spelling
  sphinxcontrib-websupport
  termcolor>=1.1.0
  tox<3.0.0,>=2.0.0
  virtualenv>=1.11.2
  whitenoise
  yuicompressor

Finding the best candidates:
  found candidate alabaster==0.7.10 (constraint was >=0.7,<0.8)
  found candidate attrs==17.4.0 (constraint was >=17.4.0)
  found candidate babel==2.5.3 (constraint was >=1.3,!=2.0)
  found candidate bleach==2.1.3 (constraint was >=2.1.0)
  found candidate bump2version==0.5.7 (constraint was <any>)
  found candidate celery==4.1.0 (constraint was <any>)
  found candidate check-manifest==0.36 (constraint was <any>)
  found candidate click==6.7 (constraint was <any>)
  found candidate codecov==2.0.15 (constraint was <any>)
  found candidate commonmark==0.7.5 (constraint was >=0.7.4)
  found candidate coverage==4.0.3 (constraint was >=3.7.1,==4.0.3)
  found candidate detox==0.11 (constraint was <any>)
  found candidate django==2.0.3 (constraint was >=2.0)
  found candidate django-assets==0.12 (constraint was <any>)
  found candidate django-bootstrap-form==3.4 (constraint was <any>)
  found candidate django-debug-toolbar==1.9.1 (constraint was <any>)
  found candidate django-email-queue==0.14.0 (constraint was <any>)
  found candidate django-environ==0.4.4 (constraint was <any>)
  found candidate django-error-views==0.4.0 (constraint was <any>)
  found candidate django-formtools==2.1 (constraint was <any>)
  found candidate django-import-export==1.0.0 (constraint was <any>)
  found candidate django-opt-out[sparkpost]==0.9.1 (constraint was <any>)
  found candidate django-pascal-templates==0.8.12 (constraint was <any>)
  found candidate django-powerbank==0.3.5 (constraint was <any>)
  found candidate django-reversion==2.0.13 (constraint was <any>)
  found candidate docutils==0.13.1 (constraint was >=0.11,>=0.13.1,==0.13.1)
  found candidate enum34==1.1.6 (constraint was <any>)
  found candidate eventlet==0.22.1 (constraint was >=0.15.0)
  found candidate execnet==1.5.0 (constraint was >=1.1)
  found candidate factory-boy==2.10.0 (constraint was <any>)
  found candidate faker==0.8.12 (constraint was >=0.7.0)
  found candidate flake8==3.5.0 (constraint was <any>)
  found candidate gunicorn==19.7.1 (constraint was <any>)
  found candidate html2text==2018.1.9 (constraint was <any>)
  found candidate imagesize==1.0.0 (constraint was <any>)
  found candidate invoke==0.22.1 (constraint was <any>)
  found candidate isort==4.3.4 (constraint was <any>)
  found candidate jinja2==2.10 (constraint was >=2.3)
  found candidate mccabe==0.6.1 (constraint was >=0.6.0,<0.7.0)
  found candidate mock==2.0.0 (constraint was <any>)
  found candidate more-itertools==4.1.0 (constraint was >=4.0.0)
Please check your version specifier and version number. See PEP440 for more information.

INFO:pip9._vendor.requests.packages.urllib3.connectionpool:Starting new HTTPS connection (1): pypi.python.org
INFO:notpip.req.req_set:Obtaining file:///data/work/company/project
Warning: Your dependencies could not be resolved. You likely have a mismatch in your sub-dependencies.
  You can use $ pipenv install --skip-lock to bypass this mechanism, then run $ pipenv graph to inspect the situation.
Could not find a version that matches multiinfo
Tried: (no version found at all)
INFO:notpip.req.req_set:Obtaining file:///data/work/company/project
INFO:pip9._vendor.requests.packages.urllib3.connectionpool:Starting new HTTPS connection (1): pypi.python.org
Warning: Your dependencies could not be resolved. You likely have a mismatch in your sub-dependencies.
  You can use $ pipenv install --skip-lock to bypass this mechanism, then run $ pipenv graph to inspect the situation.
Could not find a version that matches multiinfo
Tried: (no version found at all)
$ python -m pipenv.help output

Pipenv version: '11.9.0'

Pipenv location: '/home/janusz/.local/venvs/pipenv/lib/python3.5/site-packages/pipenv'

Python location: '/home/janusz/.local/venvs/pipenv/bin/python'

Other Python installations in PATH:

  • 2.7: /usr/bin/python2.7

  • 2.7: /usr/bin/python2.7

  • 3.4: /home/janusz/.pyenv/shims/python3.4m

  • 3.4: /home/janusz/.pyenv/shims/python3.4

  • 3.4: /home/janusz/.pyenv/shims/python3.4

  • 3.5: /home/janusz/.pyenv/shims/python3.5m

  • 3.5: /home/janusz/.local/venvs/pipenv/bin/python3.5

  • 3.5: /home/janusz/.pyenv/shims/python3.5

  • 3.5: /home/janusz/.local/venvs/pipenv/bin/python3.5

  • 3.5: /home/janusz/.pyenv/shims/python3.5

  • 3.5: /usr/bin/python3.5

  • 3.6: /home/janusz/.pyenv/shims/python3.6m

  • 3.6: /home/janusz/.pyenv/shims/python3.6

  • 3.6: /home/janusz/.pyenv/shims/python3.6

  • 3.5.2: /home/janusz/.local/venvs/pipenv/bin/python

  • 3.5.2: /home/janusz/.pyenv/shims/python

  • 3.5.2: /home/janusz/.local/venvs/pipenv/bin/python

  • 3.5.2: /home/janusz/.pyenv/shims/python

  • 2.7.12: /usr/bin/python

  • 2.7.12: /usr/bin/python2

  • 3.5.2: /home/janusz/.local/venvs/pipenv/bin/python3

  • 3.5.2: /home/janusz/.pyenv/shims/python3

  • 3.5.2: /home/janusz/.local/venvs/pipenv/bin/python3

  • 3.5.2: /home/janusz/.pyenv/shims/python3

  • 3.5.2: /usr/bin/python3

PEP 508 Information:

{'implementation_name': 'cpython',                                                                                                                                                           
 'implementation_version': '3.5.2',                                                                                                                                                          
 'os_name': 'posix',                                                                                                                                                                         
 'platform_machine': 'x86_64',                                                                                                                                                               
 'platform_python_implementation': 'CPython',                                                                                                                                                
 'platform_release': '4.13.0-26-generic',                                                                                                                                                    
 'platform_system': 'Linux',                                                                                                                                                                 
 'platform_version': '#29~16.04.2-Ubuntu SMP Tue Jan 9 22:00:44 UTC 2018',                                                                                                                   
 'python_full_version': '3.5.2',                                                                                                                                                             
 'python_version': '3.5',
 'sys_platform': 'linux'}

System environment variables:

  • PAM_KWALLET5_LOGIN
  • KDE_FULL_SESSION
  • XDG_SESSION_COOKIE
  • XDG_SESSION_CLASS
  • KDE_MULTIHEAD
  • COLORFGBG
  • PYTHONDONTWRITEBYTECODE
  • SHLVL
  • PWD
  • XDG_SESSION_PATH
  • QT_ACCESSIBILITY
  • PATH
  • LANGUAGE
  • KDE_SESSION_UID
  • PULSE_PROP_OVERRIDE_application.icon_name
  • TERM
  • GTK_RC_FILES
  • MANDATORY_PATH
  • XDG_SESSION_ID
  • LOGNAME
  • KONSOLE_DBUS_WINDOW
  • KDE_SESSION_VERSION
  • OMF_PATH
  • XDG_VTNR
  • XDG_DATA_DIRS
  • XCURSOR_THEME
  • XDG_SESSION_DESKTOP
  • VIRTUAL_ENV
  • LANG
  • PROFILEHOME
  • XDG_SESSION_TYPE
  • NVM_BIN
  • DEFAULTS_PATH
  • HOME
  • PIPENV_SHELL_FANCY
  • PULSE_PROP_OVERRIDE_application.version
  • QT_LINUX_ACCESSIBILITY_ALWAYS_ON
  • PYTHONUNBUFFERED
  • DBUS_SESSION_BUS_ADDRESS
  • PAM_KWALLET_LOGIN
  • KONSOLE_DBUS_SERVICE
  • NVM_CD_FLAGS
  • SHELL_SESSION_ID
  • GS_LIB
  • PYENV_ROOT
  • QT_AUTO_SCREEN_SCALE_FACTOR
  • GTK_MODULES
  • USER
  • XDG_CONFIG_DIRS
  • XAUTHORITY
  • XDG_SEAT
  • KONSOLE_PROFILE_NAME
  • PYENV_SHELL
  • GTK2_RC_FILES
  • WORKON_HOME
  • PYENV_HOOK_PATH
  • DISPLAY
  • PIP_PYTHON_PATH
  • SSH_AUTH_SOCK
  • PYENV_DIR
  • KONSOLE_DBUS_SESSION
  • NVM_DIR
  • PYENV_VERSION
  • SSH_AGENT_PID
  • XDG_RUNTIME_DIR
  • DESKTOP_SESSION
  • SESSION_MANAGER
  • SHELL
  • PULSE_PROP_OVERRIDE_application.name
  • XDG_CURRENT_DESKTOP
  • WINDOWID
  • XDG_SEAT_PATH
  • OMF_CONFIG

Pipenv–specific environment variables:

  • PIPENV_SHELL_FANCY: True

Debug–specific environment variables:

  • PATH: /home/janusz/.local/venvs/pipenv/bin:/home/janusz/.pyenv/libexec:/home/janusz/.pyenv/plugins/python-build/bin:/home/janusz/.pyenv/plugins/pyenv-virtualenv/bin:/home/janusz/.pyenv/plugins/pyenv-update/bin:/home/janusz/.pyenv/plugins/pyenv-installer/bin:/home/janusz/.pyenv/plugins/pyenv-doctor/bin:/home/janusz/.pyenv/shims:/home/janusz/.local/bin:/home/janusz/.pyenv/bin:/home/janusz/.local/venvs/pipenv/bin:/home/janusz/.pyenv/shims:/home/janusz/.local/bin:/home/janusz/.pyenv/bin:/home/janusz/.nvm/versions/node/v9.8.0/bin:/home/janusz/bin:/home/janusz/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin
  • SHELL: /usr/bin/fish
  • LANG: pl_PL.UTF-8
  • PWD: /home/janusz
  • VIRTUAL_ENV: /home/janusz/.local/venvs/pipenv


@techalchemy
Copy link
Member

Hey @wooyek sorry for the delay, based on the output it looks like your package requires itself as an installation dependency. This is going to cause you problems because it isn't being assigned a name at installation time. One way you can work around this is by using a file:// uri instead of a relative path, which would allow you to use #egg=multiinfo at the end (e.g. file:///data/work/company/project/requirements/local/multiinfo-0.1.0-py2.py3-none-any.whl#egg=multiinfo) -- not sure if this will work

Another option which might work is to set the name in the pipfile where you currently will see a 7 character hash -- just change that to multiinfo

I'm not totally sure this will fix the problem for you because the real issue is that your package requires itself somehow, and circular dependencies are always going to cause problems. What I really need to see to troubleshoot is if you install everything using pipenv install --skip-lock, what is the output of pipenv graph

@uranusjr
Copy link
Member

uranusjr commented Apr 5, 2018

Another option is to spin up a custom PyPI on localhost during locking. It’s much easier than you’d think.

https://pypi.org/project/pypiserver/

@wooyek
Copy link
Author

wooyek commented Apr 5, 2018

@techalchemy thx for the input. Self dependency wasn't intended, thx for pointing it out, I missed it because pip-compile did not complain.

I will check other options, but absolute uri path will not work because it probably won't work on other environments wg. heroku where this path would be /app/requirements/local/multiinfo-0.1.0-py2.py3-none-any.whl#egg=multiinfo.

@wooyek
Copy link
Author

wooyek commented Apr 5, 2018

@uranusjr Would it work with production if local PyPi is just on dev environment for the locking phase?

@uranusjr
Copy link
Member

uranusjr commented Apr 5, 2018

You’d need to supply --skip-lockwhen installing packages in production, but yes, it should work. On the other hand, you can keep the local PyPI available for both dev and prod environments as well. It is common practice (I think, based on the issues Pipenv gets about private ``[[source]]` entries) for corporations to host an internal index server to serve internal packages not intended to be published to the global PyPI.


Edit: I think you can do pipenv install --ignore-pipfile as well, which installs directly from the lock file. This probably makes more sense in the prod context.

@wooyek
Copy link
Author

wooyek commented Apr 5, 2018

@uranusjr the main problem with local PyPi is that it is local.

Having it externally available makes a project by itself. You have to maintain it, keep it secure, manage authorization for different project and customers. This is a major effort just to overcome pipenv lack of --find-links support for local relative paths — as it is in pip.

Not to mention TTL for old packages that where used in that legacy project that some customer still uses and maybe will need access to that package. Having this customer have copy of package distribution file is so much easier, even from business and security perspective — no need o official agreement that we we will maintain our PyPi for X years, have SLA's and whatnot.

I hope this shows my reasons for being reluctant to spin off our own PyPi service.

Tox may have had same problem with it obscuring pip installaction internally, but there is an elegant solution to that in the install_commandhttp://tox.readthedocs.io/en/latest/config.html#confval-install_command=ARGV) setting. You could set it to:

install_command = pip install --find-links {toxinidir}/requirements/local {opts} {packages}

And it works great. But it's not even needed most of the time, it you put in the requirements.txt referenced by tox it will also work:

# Redirect requirements to a locked/compiled/frozen file
-r requirements/lock/production.txt

# Allow installation of requirements from local folder
--find-links=requirements/local

I understand that having your own PyPi is awesome and enterprise, but there is a very simple solution in place already — local, relative index folders — let's not throw it away.

I just think that instead of making peaople use more internal PyPi instances, we'll encourage them to copy/vendorize libraries inside their projects, as its easier to do. I would like for more people that have internal proprietary packages to distribute them as package archives and not as copies of source code.

PS. Thx for the tip about --skip-lock in production. I'll check if Heroku does locking or not and if does if can he switched off.

@techalchemy
Copy link
Member

This discussion is really annoying because I built support for local relative paths starting in #540. Instead of writing essays complaining that we don’t support your use case, fix your setupfile and get back to us about whether you encounter more resolution issues because we support exactly this use case. Not by some magic or forcing you to use private indexes. Local relative paths are supported.

You already know this. You read the issues about them. You shouldn’t need anything special.

pkgname = {path = “./relative/path/to/wheel.whl”}

@techalchemy
Copy link
Member

And to be clear we are not copying tox’s model because their use case is not like ours. Also, we already support what you want.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants