1

I created my local pypi server http://localhost:8080/simple. I uploaded packages flask-mongoengine I need for my project, but when tox try to do pip install that packages dependency for nose, it try to download from pypi.python.org

Collecting flask-mongoengine==0.9.2 (from -r requirements.txt (line 14))
  Downloading https://localhost:8080/packages/flask-mongoengine-0.9.2.tar.gz (112kB)
    100% |████████████████████████████████| 112kB 26.8MB/s
    Complete output from command python setup.py egg_info:
    Download error on https://pypi.python.org/simple/nose/: [Errno 101] Network is unreachable -- Some packages may not be found!
    Couldn't find index page for 'nose' (maybe misspelled?)
    Download error on https://pypi.python.org/simple/: [Errno 101] Network is unreachable -- Some packages may not be found!
    No local packages or working download links found for nose
    Traceback (most recent call last):
      File "<string>", line 1, in <module>
      File "/tmp/pip-build-n57wg0y0/flask-mongoengine/setup.py", line 74, in <module>
        'Topic :: Software Development :: Libraries :: Python Modules'
      File "/var/lib/jenkins/.pyenv/versions/3.5.2/lib/python3.5/distutils/core.py", line 108, in setup
        _setup_distribution = dist = klass(attrs)
      File "/var/lib/jenkins/workspace/myproject/.tox/py35/lib/python3.5/site-packages/setuptools/dist.py", line 315, in __init__
        self.fetch_build_eggs(attrs['setup_requires'])
      File "/var/lib/jenkins/workspace/myproject/.tox/py35/lib/python3.5/site-packages/setuptools/dist.py", line 361, in fetch_build_eggs
        replace_conflicting=True,
      File "/var/lib/jenkins/workspace/myproject/.tox/py35/lib/python3.5/site-packages/pkg_resources/__init__.py", line 850, in resolve
        dist = best[req.key] = env.best_match(req, ws, installer)
      File "/var/lib/jenkins/workspace/myproject/.tox/py35/lib/python3.5/site-packages/pkg_resources/__init__.py", line 1122, in best_match
        return self.obtain(req, installer)
      File "/var/lib/jenkins/workspace/myproject/.tox/py35/lib/python3.5/site-packages/pkg_resources/__init__.py", line 1134, in obtain
        return installer(requirement)
      File "/var/lib/jenkins/workspace/myproject/.tox/py35/lib/python3.5/site-packages/setuptools/dist.py", line 429, in fetch_build_egg
        return cmd.easy_install(req)
      File "/var/lib/jenkins/workspace/myproject/.tox/py35/lib/python3.5/site-packages/setuptools/command/easy_install.py", line 659, in easy_install
        raise DistutilsError(msg)
    distutils.errors.DistutilsError: Could not find suitable distribution for Requirement.parse('nose')

My pypi server has nose package, but some how, its not redirected to that.

Tried the first answer, it gives error

Traceback (most recent call last):
  File "/var/lib/jenkins/workspace/myproject/.tox/py35/lib/python3.5/site-packages/pip/req/req_install.py", line 82, in __init__
    req = Requirement(req)
  File "/var/lib/jenkins/workspace/myproject/.tox/py35/lib/python3.5/site-packages/pip/_vendor/packaging/requirements.py", line 96, in __init__
    requirement_string[e.loc:e.loc + 8]))
pip._vendor.packaging.requirements.InvalidRequirement: Invalid requirement, parse error at "'[global]'"

ERROR: InvocationError: '/var/lib/jenkins/workspace/myproject/.tox/py35/bin/pip install -i http://localhost:8080 --trusted-host localhost:8080 -r requirements.txt'
Nilesh
  • 20,521
  • 16
  • 92
  • 148

1 Answers1

1

specify the default to point at localhost? in $HOME/.pypirc :

[distutils]
index-servers =
    localpypi

[localpypi]
repository: http://localhost:8080/simple
username:<your_localpypi_username>
password:<your_localpypi_passwd>

A bit further up in requirements.txt something like this might instead work instead of .pypirc, or maybe it might be needed in addtion to:

# requirements.txt
--index-url http://localhost:8080/simple
--trusted-host localhost:8080
flask-mongoengine

And for $HOME/.config/pip/pip.conf :

[global]
timeout = 1
index-url = http://localhost:8080/simple
trusted-host = localhost:8080

ah yeah this too perhaps :

also maybe :

python setup.py dist upload -r http://localhost:8080/simple

If any dependencies are required from pypi then :

I get confused with all the places --index-url and --extra-index-url can get set, but the thought was to set the index-url for pypi, and for pip too?

jmunsch
  • 22,771
  • 11
  • 93
  • 114
  • Still its same error, I think, `distutils` will be used, when you try to do `dist upload`. – Nilesh Jan 24 '18 at 20:54
  • Thanks @jmunsch, but I dont want to upload. I want to download package. For `dist upload` it works, but `flask-mongoengine` is not my package, my project is depend on that. – Nilesh Jan 24 '18 at 21:11
  • @Nilesh so maybe `--extra-index-url` sory thought it was a completely local pypi server? – jmunsch Jan 24 '18 at 21:17
  • @Nilesh update, so thought about it a bit, maybe try the `[global]` pip.conf stuff, I forgot that requirements.txt and pip.conf use different formats. hope it helps. – jmunsch Jan 24 '18 at 22:19