napalm-automation / napalm

Network Automation and Programmability Abstraction Layer with Multivendor support
Apache License 2.0
2.24k stars 552 forks source link

Missing dependency for 'requests' package during installation #1158

Closed 111pontes closed 4 years ago

111pontes commented 4 years ago

Description of Issue/Question

Note: Please check https://guides.github.com/features/mastering-markdown/ to see how to properly format your request.

Did you follow the steps from https://github.com/napalm-automation/napalm#faq

(Place an x between the square brackets where applicable)

Setup

napalm version

(Paste verbatim output from pip freeze | grep napalm between quotes below)

$ pip list | grep napalm
napalm                3.0.0     
$ 
$ git rev-parse HEAD
08e41b8f17c3f12fbe94bece44e614d71a4f93e1
$

Network operating system version

(Paste verbatim output from show version - or equivalent - between quotes below)

N/A

Steps to Reproduce the Issue

(napalm-develop) (develop=)$ python setup.py sdist
running sdist
running egg_info
writing napalm.egg-info/PKG-INFO
writing dependency_links to napalm.egg-info/dependency_links.txt
writing entry points to napalm.egg-info/entry_points.txt
writing requirements to napalm.egg-info/requires.txt
writing top-level names to napalm.egg-info/top_level.txt
reading manifest file 'napalm.egg-info/SOURCES.txt'
reading manifest template 'MANIFEST.in'
writing manifest file 'napalm.egg-info/SOURCES.txt'
running check
creating napalm-3.0.0
creating napalm-3.0.0/napalm
creating napalm-3.0.0/napalm.egg-info
creating napalm-3.0.0/napalm/base
creating napalm-3.0.0/napalm/base/clitools
creating napalm-3.0.0/napalm/base/test
creating napalm-3.0.0/napalm/base/utils
creating napalm-3.0.0/napalm/eos
creating napalm-3.0.0/napalm/eos/templates
creating napalm-3.0.0/napalm/eos/utils
creating napalm-3.0.0/napalm/eos/utils/textfsm_templates
creating napalm-3.0.0/napalm/ios
creating napalm-3.0.0/napalm/ios/templates
creating napalm-3.0.0/napalm/ios/utils
creating napalm-3.0.0/napalm/ios/utils/textfsm_templates
creating napalm-3.0.0/napalm/iosxr
creating napalm-3.0.0/napalm/iosxr/templates
creating napalm-3.0.0/napalm/junos
creating napalm-3.0.0/napalm/junos/templates
creating napalm-3.0.0/napalm/junos/utils
creating napalm-3.0.0/napalm/nxapi_plumbing
creating napalm-3.0.0/napalm/nxos
creating napalm-3.0.0/napalm/nxos/templates
creating napalm-3.0.0/napalm/nxos/utils
creating napalm-3.0.0/napalm/nxos/utils/textfsm_templates
creating napalm-3.0.0/napalm/nxos_ssh
creating napalm-3.0.0/napalm/nxos_ssh/templates
creating napalm-3.0.0/napalm/nxos_ssh/utils
creating napalm-3.0.0/napalm/nxos_ssh/utils/textfsm_templates
creating napalm-3.0.0/napalm/pyIOSXR
copying files to napalm-3.0.0...
copying LICENSE -> napalm-3.0.0
copying MANIFEST.in -> napalm-3.0.0
copying README.md -> napalm-3.0.0
copying requirements-dev.txt -> napalm-3.0.0
copying requirements.txt -> napalm-3.0.0
copying setup.cfg -> napalm-3.0.0
copying setup.py -> napalm-3.0.0
copying napalm/_SUPPORTED_DRIVERS.py -> napalm-3.0.0/napalm
copying napalm/__init__.py -> napalm-3.0.0/napalm
copying napalm.egg-info/PKG-INFO -> napalm-3.0.0/napalm.egg-info
copying napalm.egg-info/SOURCES.txt -> napalm-3.0.0/napalm.egg-info
copying napalm.egg-info/dependency_links.txt -> napalm-3.0.0/napalm.egg-info
copying napalm.egg-info/entry_points.txt -> napalm-3.0.0/napalm.egg-info
copying napalm.egg-info/requires.txt -> napalm-3.0.0/napalm.egg-info
copying napalm.egg-info/top_level.txt -> napalm-3.0.0/napalm.egg-info
copying napalm/base/__init__.py -> napalm-3.0.0/napalm/base
copying napalm/base/base.py -> napalm-3.0.0/napalm/base
copying napalm/base/canonical_map.py -> napalm-3.0.0/napalm/base
copying napalm/base/constants.py -> napalm-3.0.0/napalm/base
copying napalm/base/exceptions.py -> napalm-3.0.0/napalm/base
copying napalm/base/helpers.py -> napalm-3.0.0/napalm/base
copying napalm/base/mock.py -> napalm-3.0.0/napalm/base
copying napalm/base/netmiko_helpers.py -> napalm-3.0.0/napalm/base
copying napalm/base/validate.py -> napalm-3.0.0/napalm/base
copying napalm/base/clitools/__init__.py -> napalm-3.0.0/napalm/base/clitools
copying napalm/base/clitools/cl_napalm.py -> napalm-3.0.0/napalm/base/clitools
copying napalm/base/clitools/cl_napalm_configure.py -> napalm-3.0.0/napalm/base/clitools
copying napalm/base/clitools/cl_napalm_test.py -> napalm-3.0.0/napalm/base/clitools
copying napalm/base/clitools/cl_napalm_validate.py -> napalm-3.0.0/napalm/base/clitools
copying napalm/base/clitools/helpers.py -> napalm-3.0.0/napalm/base/clitools
copying napalm/base/test/__init__.py -> napalm-3.0.0/napalm/base/test
copying napalm/base/test/base.py -> napalm-3.0.0/napalm/base/test
copying napalm/base/test/conftest.py -> napalm-3.0.0/napalm/base/test
copying napalm/base/test/double.py -> napalm-3.0.0/napalm/base/test
copying napalm/base/test/getters.py -> napalm-3.0.0/napalm/base/test
copying napalm/base/test/helpers.py -> napalm-3.0.0/napalm/base/test
copying napalm/base/test/models.py -> napalm-3.0.0/napalm/base/test
copying napalm/base/utils/__init__.py -> napalm-3.0.0/napalm/base/utils
copying napalm/base/utils/jinja_filters.py -> napalm-3.0.0/napalm/base/utils
copying napalm/base/utils/string_parsers.py -> napalm-3.0.0/napalm/base/utils
copying napalm/eos/__init__.py -> napalm-3.0.0/napalm/eos
copying napalm/eos/constants.py -> napalm-3.0.0/napalm/eos
copying napalm/eos/eos.py -> napalm-3.0.0/napalm/eos
copying napalm/eos/templates/delete_ntp_servers.j2 -> napalm-3.0.0/napalm/eos/templates
copying napalm/eos/templates/delete_snmp_config.j2 -> napalm-3.0.0/napalm/eos/templates
copying napalm/eos/templates/delete_users.j2 -> napalm-3.0.0/napalm/eos/templates
copying napalm/eos/templates/set_ntp_servers.j2 -> napalm-3.0.0/napalm/eos/templates
copying napalm/eos/templates/set_users.j2 -> napalm-3.0.0/napalm/eos/templates
copying napalm/eos/templates/snmp_config.j2 -> napalm-3.0.0/napalm/eos/templates
copying napalm/eos/utils/__init__.py -> napalm-3.0.0/napalm/eos/utils
copying napalm/eos/utils/textfsm_templates/bgp_detail.tpl -> napalm-3.0.0/napalm/eos/utils/textfsm_templates
copying napalm/eos/utils/textfsm_templates/ntp_peers.tpl -> napalm-3.0.0/napalm/eos/utils/textfsm_templates
copying napalm/eos/utils/textfsm_templates/snmp_config.tpl -> napalm-3.0.0/napalm/eos/utils/textfsm_templates
copying napalm/eos/utils/textfsm_templates/vrf.tpl -> napalm-3.0.0/napalm/eos/utils/textfsm_templates
copying napalm/ios/__init__.py -> napalm-3.0.0/napalm/ios
copying napalm/ios/ios.py -> napalm-3.0.0/napalm/ios
copying napalm/ios/templates/delete_ntp_peers.j2 -> napalm-3.0.0/napalm/ios/templates
copying napalm/ios/templates/delete_ntp_servers.j2 -> napalm-3.0.0/napalm/ios/templates
copying napalm/ios/templates/delete_snmp_config.j2 -> napalm-3.0.0/napalm/ios/templates
copying napalm/ios/templates/set_hostname.j2 -> napalm-3.0.0/napalm/ios/templates
copying napalm/ios/templates/set_ntp_peers.j2 -> napalm-3.0.0/napalm/ios/templates
copying napalm/ios/templates/set_ntp_servers.j2 -> napalm-3.0.0/napalm/ios/templates
copying napalm/ios/templates/snmp_config.j2 -> napalm-3.0.0/napalm/ios/templates
copying napalm/ios/utils/textfsm_templates/ip_bgp_all_sum.tpl -> napalm-3.0.0/napalm/ios/utils/textfsm_templates
copying napalm/ios/utils/textfsm_templates/ip_bgp_neigh.tpl -> napalm-3.0.0/napalm/ios/utils/textfsm_templates
copying napalm/ios/utils/textfsm_templates/ip_bgp_neigh_afi.tpl -> napalm-3.0.0/napalm/ios/utils/textfsm_templates
copying napalm/ios/utils/textfsm_templates/show_lldp_neighbors.tpl -> napalm-3.0.0/napalm/ios/utils/textfsm_templates
copying napalm/ios/utils/textfsm_templates/show_lldp_neighbors_detail.tpl -> napalm-3.0.0/napalm/ios/utils/textfsm_templates
copying napalm/iosxr/__init__.py -> napalm-3.0.0/napalm/iosxr
copying napalm/iosxr/constants.py -> napalm-3.0.0/napalm/iosxr
copying napalm/iosxr/iosxr.py -> napalm-3.0.0/napalm/iosxr
copying napalm/iosxr/templates/delete_ntp_peers.j2 -> napalm-3.0.0/napalm/iosxr/templates
copying napalm/iosxr/templates/delete_ntp_servers.j2 -> napalm-3.0.0/napalm/iosxr/templates
copying napalm/iosxr/templates/delete_probes.j2 -> napalm-3.0.0/napalm/iosxr/templates
copying napalm/iosxr/templates/delete_snmp_config.j2 -> napalm-3.0.0/napalm/iosxr/templates
copying napalm/iosxr/templates/delete_users.j2 -> napalm-3.0.0/napalm/iosxr/templates
copying napalm/iosxr/templates/schedule_probes.j2 -> napalm-3.0.0/napalm/iosxr/templates
copying napalm/iosxr/templates/set_hostname.j2 -> napalm-3.0.0/napalm/iosxr/templates
copying napalm/iosxr/templates/set_ntp_peers.j2 -> napalm-3.0.0/napalm/iosxr/templates
copying napalm/iosxr/templates/set_ntp_servers.j2 -> napalm-3.0.0/napalm/iosxr/templates
copying napalm/iosxr/templates/set_probes.j2 -> napalm-3.0.0/napalm/iosxr/templates
copying napalm/iosxr/templates/set_users.j2 -> napalm-3.0.0/napalm/iosxr/templates
copying napalm/iosxr/templates/snmp_config.j2 -> napalm-3.0.0/napalm/iosxr/templates
copying napalm/junos/__init__.py -> napalm-3.0.0/napalm/junos
copying napalm/junos/constants.py -> napalm-3.0.0/napalm/junos
copying napalm/junos/junos.py -> napalm-3.0.0/napalm/junos
copying napalm/junos/templates/delete_ntp_peers.j2 -> napalm-3.0.0/napalm/junos/templates
copying napalm/junos/templates/delete_ntp_servers.j2 -> napalm-3.0.0/napalm/junos/templates
copying napalm/junos/templates/delete_probes.j2 -> napalm-3.0.0/napalm/junos/templates
copying napalm/junos/templates/delete_snmp_config.j2 -> napalm-3.0.0/napalm/junos/templates
copying napalm/junos/templates/delete_users.j2 -> napalm-3.0.0/napalm/junos/templates
copying napalm/junos/templates/schedule_probes.j2 -> napalm-3.0.0/napalm/junos/templates
copying napalm/junos/templates/set_hostname.j2 -> napalm-3.0.0/napalm/junos/templates
copying napalm/junos/templates/set_ntp_peers.j2 -> napalm-3.0.0/napalm/junos/templates
copying napalm/junos/templates/set_ntp_servers.j2 -> napalm-3.0.0/napalm/junos/templates
copying napalm/junos/templates/set_probes.j2 -> napalm-3.0.0/napalm/junos/templates
copying napalm/junos/templates/set_users.j2 -> napalm-3.0.0/napalm/junos/templates
copying napalm/junos/templates/snmp_config.j2 -> napalm-3.0.0/napalm/junos/templates
copying napalm/junos/utils/__init__.py -> napalm-3.0.0/napalm/junos/utils
copying napalm/junos/utils/junos_views.py -> napalm-3.0.0/napalm/junos/utils
copying napalm/junos/utils/junos_views.yml -> napalm-3.0.0/napalm/junos/utils
copying napalm/nxapi_plumbing/__init__.py -> napalm-3.0.0/napalm/nxapi_plumbing
copying napalm/nxapi_plumbing/api_client.py -> napalm-3.0.0/napalm/nxapi_plumbing
copying napalm/nxapi_plumbing/device.py -> napalm-3.0.0/napalm/nxapi_plumbing
copying napalm/nxapi_plumbing/errors.py -> napalm-3.0.0/napalm/nxapi_plumbing
copying napalm/nxapi_plumbing/utilities.py -> napalm-3.0.0/napalm/nxapi_plumbing
copying napalm/nxos/__init__.py -> napalm-3.0.0/napalm/nxos
copying napalm/nxos/nxos.py -> napalm-3.0.0/napalm/nxos
copying napalm/nxos/templates/delete_ntp_peers.j2 -> napalm-3.0.0/napalm/nxos/templates
copying napalm/nxos/templates/delete_ntp_servers.j2 -> napalm-3.0.0/napalm/nxos/templates
copying napalm/nxos/templates/delete_snmp_config.j2 -> napalm-3.0.0/napalm/nxos/templates
copying napalm/nxos/templates/delete_users.j2 -> napalm-3.0.0/napalm/nxos/templates
copying napalm/nxos/templates/set_hostname.j2 -> napalm-3.0.0/napalm/nxos/templates
copying napalm/nxos/templates/set_ntp_peers.j2 -> napalm-3.0.0/napalm/nxos/templates
copying napalm/nxos/templates/set_ntp_servers.j2 -> napalm-3.0.0/napalm/nxos/templates
copying napalm/nxos/templates/set_users.j2 -> napalm-3.0.0/napalm/nxos/templates
copying napalm/nxos/templates/snmp_config.j2 -> napalm-3.0.0/napalm/nxos/templates
copying napalm/nxos/utils/__init__.py -> napalm-3.0.0/napalm/nxos/utils
copying napalm/nxos/utils/textfsm_templates/show_lldp_neighbors_detail.tpl -> napalm-3.0.0/napalm/nxos/utils/textfsm_templates
copying napalm/nxos/utils/textfsm_templates/snmp_config.tpl -> napalm-3.0.0/napalm/nxos/utils/textfsm_templates
copying napalm/nxos/utils/textfsm_templates/users.tpl -> napalm-3.0.0/napalm/nxos/utils/textfsm_templates
copying napalm/nxos_ssh/__init__.py -> napalm-3.0.0/napalm/nxos_ssh
copying napalm/nxos_ssh/nxos_ssh.py -> napalm-3.0.0/napalm/nxos_ssh
copying napalm/nxos_ssh/templates/delete_ntp_peers.j2 -> napalm-3.0.0/napalm/nxos_ssh/templates
copying napalm/nxos_ssh/templates/delete_ntp_servers.j2 -> napalm-3.0.0/napalm/nxos_ssh/templates
copying napalm/nxos_ssh/templates/delete_snmp_config.j2 -> napalm-3.0.0/napalm/nxos_ssh/templates
copying napalm/nxos_ssh/templates/delete_users.j2 -> napalm-3.0.0/napalm/nxos_ssh/templates
copying napalm/nxos_ssh/templates/set_hostname.j2 -> napalm-3.0.0/napalm/nxos_ssh/templates
copying napalm/nxos_ssh/templates/set_ntp_peers.j2 -> napalm-3.0.0/napalm/nxos_ssh/templates
copying napalm/nxos_ssh/templates/set_ntp_servers.j2 -> napalm-3.0.0/napalm/nxos_ssh/templates
copying napalm/nxos_ssh/templates/set_users.j2 -> napalm-3.0.0/napalm/nxos_ssh/templates
copying napalm/nxos_ssh/templates/snmp_config.j2 -> napalm-3.0.0/napalm/nxos_ssh/templates
copying napalm/nxos_ssh/utils/__init__.py -> napalm-3.0.0/napalm/nxos_ssh/utils
copying napalm/nxos_ssh/utils/textfsm_templates/snmp_config.tpl -> napalm-3.0.0/napalm/nxos_ssh/utils/textfsm_templates
copying napalm/nxos_ssh/utils/textfsm_templates/system_resources.tpl -> napalm-3.0.0/napalm/nxos_ssh/utils/textfsm_templates
copying napalm/nxos_ssh/utils/textfsm_templates/users.tpl -> napalm-3.0.0/napalm/nxos_ssh/utils/textfsm_templates
copying napalm/pyIOSXR/__init__.py -> napalm-3.0.0/napalm/pyIOSXR
copying napalm/pyIOSXR/exceptions.py -> napalm-3.0.0/napalm/pyIOSXR
copying napalm/pyIOSXR/iosxr.py -> napalm-3.0.0/napalm/pyIOSXR
Writing napalm-3.0.0/setup.cfg
Creating tar archive
removing 'napalm-3.0.0' (and everything under it)
(napalm-develop) (develop=)$ 
(napalm-develop) (develop=)$ pip install dist/napalm-3.0.0.tar.gz 
Processing ./dist/napalm-3.0.0.tar.gz
Requirement already satisfied: setuptools>=38.4.0 in /home/user/.virtualenvs/napalm-develop/lib/python3.6/site-packages (from napalm==3.0.0) (45.2.0)
Collecting cffi>=1.11.3
  Using cached cffi-1.14.0-cp36-cp36m-manylinux1_x86_64.whl (399 kB)
Collecting paramiko>=2.6.0
  Using cached paramiko-2.7.1-py2.py3-none-any.whl (206 kB)
Processing /home/user/.cache/pip/wheels/8b/99/a0/81daf51dcd359a9377b110a8a886b3895921802d2fc1b2397e/future-0.18.2-cp36-none-any.whl
Collecting textfsm
  Using cached textfsm-1.1.0-py2.py3-none-any.whl (37 kB)
Collecting jinja2
  Using cached Jinja2-2.11.1-py2.py3-none-any.whl (126 kB)
Collecting netaddr
  Using cached netaddr-0.7.19-py2.py3-none-any.whl (1.6 MB)
Processing /home/user/.cache/pip/wheels/e5/9d/ad/2ee53cf262cba1ffd8afe1487eef788ea3f260b7e6232a80fc/PyYAML-5.3.1-cp36-cp36m-linux_x86_64.whl
Processing /home/user/.cache/pip/wheels/e7/89/58/6bb1b5440ad7040aa05bad229f49b50850487d9048796dd473/pyeapi-0.8.3-cp36-none-any.whl
Collecting netmiko>=3.0.0
  Using cached netmiko-3.1.0-py2.py3-none-any.whl (144 kB)
Collecting junos-eznc>=2.2.1
  Using cached junos_eznc-2.3.1-py2.py3-none-any.whl (191 kB)
Collecting ciscoconfparse
  Using cached ciscoconfparse-1.5.1-py3-none-any.whl (88 kB)
Collecting scp
  Using cached scp-0.13.2-py2.py3-none-any.whl (9.5 kB)
Collecting lxml>=4.3.0
  Using cached lxml-4.5.0-cp36-cp36m-manylinux1_x86_64.whl (5.8 MB)
Collecting pycparser
  Using cached pycparser-2.20-py2.py3-none-any.whl (112 kB)
Collecting pynacl>=1.0.1
  Using cached PyNaCl-1.3.0-cp34-abi3-manylinux1_x86_64.whl (759 kB)
Collecting cryptography>=2.5
  Using cached cryptography-2.8-cp34-abi3-manylinux2010_x86_64.whl (2.3 MB)
Collecting bcrypt>=3.1.3
  Using cached bcrypt-3.1.7-cp34-abi3-manylinux1_x86_64.whl (56 kB)
Collecting six
  Using cached six-1.14.0-py2.py3-none-any.whl (10 kB)
Collecting MarkupSafe>=0.23
  Using cached MarkupSafe-1.1.1-cp36-cp36m-manylinux1_x86_64.whl (27 kB)
Collecting pyserial
  Using cached pyserial-3.4-py2.py3-none-any.whl (193 kB)
Collecting pyparsing
  Using cached pyparsing-2.4.6-py2.py3-none-any.whl (67 kB)
Processing /home/user/.cache/pip/wheels/cf/bd/88/1f973a38d0574e639260c1f381b04435213bf48076a0f495e8/yamlordereddictloader-0.4.0-cp36-none-any.whl
Collecting transitions
  Using cached transitions-0.8.0-py2.py3-none-any.whl (71 kB)
Processing /home/user/.cache/pip/wheels/85/01/9e/290f22eb7b51433a89393dcd0dd1ab2a607b7542f03dde6f9d/ncclient-0.6.7-py2.py3-none-any.whl
Collecting dnspython
  Using cached dnspython-1.16.0-py2.py3-none-any.whl (188 kB)
Collecting colorama
  Using cached colorama-0.4.3-py2.py3-none-any.whl (15 kB)
Collecting passlib
  Using cached passlib-1.7.2-py2.py3-none-any.whl (507 kB)
Building wheels for collected packages: napalm
  Building wheel for napalm (setup.py) ... done
  Created wheel for napalm: filename=napalm-3.0.0-py2.py3-none-any.whl size=216113 sha256=a911957f5245f051251e627fbf71a1d0482f033c3e276a8b29ff2276ef6dc5ef
  Stored in directory: /home/user/.cache/pip/wheels/55/87/8c/a0b2b103e153225c17c01a02a2fba4954a88d78d32b537806d
Successfully built napalm
Installing collected packages: pycparser, cffi, six, pynacl, cryptography, bcrypt, paramiko, future, textfsm, MarkupSafe, jinja2, netaddr, pyYAML, pyeapi, pyserial, scp, netmiko, lxml, pyparsing, yamlordereddictloader, transitions, ncclient, junos-eznc, dnspython, colorama, passlib, ciscoconfparse, napalm
Successfully installed MarkupSafe-1.1.1 bcrypt-3.1.7 cffi-1.14.0 ciscoconfparse-1.5.1 colorama-0.4.3 cryptography-2.8 dnspython-1.16.0 future-0.18.2 jinja2-2.11.1 junos-eznc-2.3.1 lxml-4.5.0 napalm-3.0.0 ncclient-0.6.7 netaddr-0.7.19 netmiko-3.1.0 paramiko-2.7.1 passlib-1.7.2 pyYAML-5.3.1 pycparser-2.20 pyeapi-0.8.3 pynacl-1.3.0 pyparsing-2.4.6 pyserial-3.4 scp-0.13.2 six-1.14.0 textfsm-1.1.0 transitions-0.8.0 yamlordereddictloader-0.4.0
(napalm-develop) (develop=)$ 
(napalm-develop) (develop=)$ pip list
Package               Version
--------------------- -------
bcrypt                3.1.7  
cffi                  1.14.0 
ciscoconfparse        1.5.1  
colorama              0.4.3  
cryptography          2.8    
dnspython             1.16.0 
future                0.18.2 
Jinja2                2.11.1 
junos-eznc            2.3.1  
lxml                  4.5.0  
MarkupSafe            1.1.1  
napalm                3.0.0  
ncclient              0.6.7  
netaddr               0.7.19 
netmiko               3.1.0  
paramiko              2.7.1  
passlib               1.7.2  
pip                   20.0.2 
pycparser             2.20   
pyeapi                0.8.3  
PyNaCl                1.3.0  
pyparsing             2.4.6  
pyserial              3.4    
PyYAML                5.3.1  
scp                   0.13.2 
setuptools            45.2.0 
six                   1.14.0 
textfsm               1.1.0  
transitions           0.8.0  
wheel                 0.34.2 
yamlordereddictloader 0.4.0  
(napalm-develop) (develop=)$ 

Error Traceback

(Paste the complete traceback of the exception between quotes below)

(napalm-develop) (develop=)$ python
Python 3.6.9 (default, Nov  7 2019, 10:44:02) 
[GCC 8.3.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import napalm
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/home/user/src/github.com/111pontes/napalm/napalm/__init__.py", line 11, in <module>
    import napalm.nxos
  File "/home/user/src/github.com/111pontes/napalm/napalm/nxos/__init__.py", line 22, in <module>
    from napalm.nxos.nxos import NXOSDriver
  File "/home/user/src/github.com/111pontes/napalm/napalm/nxos/nxos.py", line 26, in <module>
    from requests.exceptions import ConnectionError
ModuleNotFoundError: No module named 'requests'
>>> 
mirceaulinic commented 4 years ago

Have you tried pip install napalm? @111pontes

111pontes commented 4 years ago

Version in PyPI (2.5.0) certainly doesn't have the issue. It occurs in the develop branch.

111pontes commented 4 years ago

Dependency installs fine form PyPI:

(napalm-2.5.0) $ pip install napalm
Collecting napalm
  Using cached napalm-2.5.0-py2.py3-none-any.whl (201 kB)
Collecting cffi>=1.11.3
  Using cached cffi-1.14.0-cp36-cp36m-manylinux1_x86_64.whl (399 kB)
Processing ./.cache/pip/wheels/78/e7/50/4b96bb6b2206ea45a1663c9df64519ca0a15aac4ff0fca56cb/pyIOSXR-0.53-cp36-none-any.whl
Collecting netaddr
  Using cached netaddr-0.7.19-py2.py3-none-any.whl (1.6 MB)
Collecting ciscoconfparse
  Using cached ciscoconfparse-1.5.1-py3-none-any.whl (88 kB)
Processing ./.cache/pip/wheels/8b/99/a0/81daf51dcd359a9377b110a8a886b3895921802d2fc1b2397e/future-0.18.2-cp36-none-any.whl
Collecting textfsm
  Using cached textfsm-1.1.0-py2.py3-none-any.whl (37 kB)
Collecting jinja2
  Using cached Jinja2-2.11.1-py2.py3-none-any.whl (126 kB)
Collecting paramiko>=2.4.2
  Using cached paramiko-2.7.1-py2.py3-none-any.whl (206 kB)
Processing ./.cache/pip/wheels/e7/89/58/6bb1b5440ad7040aa05bad229f49b50850487d9048796dd473/pyeapi-0.8.3-cp36-none-any.whl
Collecting netmiko==2.4.2
  Using cached netmiko-2.4.2-py2.py3-none-any.whl (144 kB)
Requirement already satisfied: setuptools>=38.4.0 in ./.virtualenvs/napalm-2.5.0/lib/python3.6/site-packages (from napalm) (45.2.0)
Collecting junos-eznc==2.2.1
  Using cached junos_eznc-2.2.1-py2.py3-none-any.whl (159 kB)
Collecting scp
  Using cached scp-0.13.2-py2.py3-none-any.whl (9.5 kB)
Processing ./.cache/pip/wheels/14/8c/ce/6283d2a5b31c2a9a29c6209fe61996839dbd8515afd8e47ff6/nxapi_plumbing-0.5.2-cp36-none-any.whl
Processing ./.cache/pip/wheels/e5/9d/ad/2ee53cf262cba1ffd8afe1487eef788ea3f260b7e6232a80fc/PyYAML-5.3.1-cp36-cp36m-linux_x86_64.whl
Collecting pycparser
  Using cached pycparser-2.20-py2.py3-none-any.whl (112 kB)
Collecting lxml>=3.2.4
  Using cached lxml-4.5.0-cp36-cp36m-manylinux1_x86_64.whl (5.8 MB)
Collecting dnspython
  Using cached dnspython-1.16.0-py2.py3-none-any.whl (188 kB)
Collecting colorama
  Using cached colorama-0.4.3-py2.py3-none-any.whl (15 kB)
Collecting passlib
  Using cached passlib-1.7.2-py2.py3-none-any.whl (507 kB)
Collecting six
  Using cached six-1.14.0-py2.py3-none-any.whl (10 kB)
Collecting MarkupSafe>=0.23
  Using cached MarkupSafe-1.1.1-cp36-cp36m-manylinux1_x86_64.whl (27 kB)
Collecting cryptography>=2.5
  Using cached cryptography-2.8-cp34-abi3-manylinux2010_x86_64.whl (2.3 MB)
Collecting bcrypt>=3.1.3
  Using cached bcrypt-3.1.7-cp34-abi3-manylinux1_x86_64.whl (56 kB)
Collecting pynacl>=1.0.1
  Using cached PyNaCl-1.3.0-cp34-abi3-manylinux1_x86_64.whl (759 kB)
Collecting pyserial
  Using cached pyserial-3.4-py2.py3-none-any.whl (193 kB)
Processing ./.cache/pip/wheels/85/01/9e/290f22eb7b51433a89393dcd0dd1ab2a607b7542f03dde6f9d/ncclient-0.6.7-py2.py3-none-any.whl
Collecting requests>=2.7.0
  Using cached requests-2.23.0-py2.py3-none-any.whl (58 kB)
Collecting chardet<4,>=3.0.2
  Using cached chardet-3.0.4-py2.py3-none-any.whl (133 kB)
Collecting urllib3!=1.25.0,!=1.25.1,<1.26,>=1.21.1
  Using cached urllib3-1.25.8-py2.py3-none-any.whl (125 kB)
Collecting certifi>=2017.4.17
  Using cached certifi-2019.11.28-py2.py3-none-any.whl (156 kB)
Collecting idna<3,>=2.5
  Using cached idna-2.9-py2.py3-none-any.whl (58 kB)
Installing collected packages: pycparser, cffi, lxml, six, cryptography, bcrypt, pynacl, paramiko, future, textfsm, pyserial, scp, netmiko, pyIOSXR, netaddr, dnspython, colorama, passlib, ciscoconfparse, MarkupSafe, jinja2, pyeapi, pyYAML, ncclient, junos-eznc, chardet, urllib3, certifi, idna, requests, nxapi-plumbing, napalm
Successfully installed MarkupSafe-1.1.1 bcrypt-3.1.7 certifi-2019.11.28 cffi-1.14.0 chardet-3.0.4 ciscoconfparse-1.5.1 colorama-0.4.3 cryptography-2.8 dnspython-1.16.0 future-0.18.2 idna-2.9 jinja2-2.11.1 junos-eznc-2.2.1 lxml-4.5.0 napalm-2.5.0 ncclient-0.6.7 netaddr-0.7.19 netmiko-2.4.2 nxapi-plumbing-0.5.2 paramiko-2.7.1 passlib-1.7.2 pyIOSXR-0.53 pyYAML-5.3.1 pycparser-2.20 pyeapi-0.8.3 pynacl-1.3.0 pyserial-3.4 requests-2.23.0 scp-0.13.2 six-1.14.0 textfsm-1.1.0 urllib3-1.25.8
(napalm-2.5.0) $ python
Python 3.6.9 (default, Nov  7 2019, 10:44:02) 
[GCC 8.3.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import napalm
>>> 
(napalm-2.5.0) $ pip list
Package        Version   
-------------- ----------
bcrypt         3.1.7     
certifi        2019.11.28
cffi           1.14.0    
chardet        3.0.4     
ciscoconfparse 1.5.1     
colorama       0.4.3     
cryptography   2.8       
dnspython      1.16.0    
future         0.18.2    
idna           2.9       
Jinja2         2.11.1    
junos-eznc     2.2.1     
lxml           4.5.0     
MarkupSafe     1.1.1     
napalm         2.5.0     
ncclient       0.6.7     
netaddr        0.7.19    
netmiko        2.4.2     
nxapi-plumbing 0.5.2     
paramiko       2.7.1     
passlib        1.7.2     
pip            20.0.2    
pycparser      2.20      
pyeapi         0.8.3     
pyIOSXR        0.53      
PyNaCl         1.3.0     
pyserial       3.4       
PyYAML         5.3.1     
requests       2.23.0    
scp            0.13.2    
setuptools     45.2.0    
six            1.14.0    
textfsm        1.1.0     
urllib3        1.25.8    
wheel          0.34.2    
(napalm-2.5.0) $ pip list | grep requests
requests       2.23.0    
(napalm-2.5.0) $ 
(napalm-2.5.0) $ pip list | grep napalm
napalm         2.5.0     
(napalm-2.5.0) $ 

Shouldn't requests package be listed in requirements.txt?

mirceaulinic commented 4 years ago

Hi @111pontes. I have been able to reproduce this. Yes, requests should be a direct dependency of NAPALM now. We have integrated nxapi-plumbing into NAPALM directly, and requests was a dependency of this third party library. Thanks for reporting!