title: pip installation succeeds but Python says module not found
body: <p>I am trying to install a package with pip. The installation is successful but when trying to import the modules in a subpackage it shows me an error message that says "ModuleNotFoundError: No module named...".</p>
  
  <p>The structure of the package is as follows: </p>
  
  <p>Gestor_Clientes_v2/<br>
  &emsp;&emsp; ├─ &nbsp; LICENCE.txt<br>
  &emsp;&emsp; ├─ &nbsp; manager_main/<br>
  &emsp;&emsp;&emsp;&emsp; ├─ &nbsp; __init__.py<br>
  &emsp;&emsp;&emsp;&emsp; ├─ &nbsp; run.py<br>
  &emsp;&emsp;&emsp;&emsp; ├─ &nbsp; support.py<br>
  &emsp;&emsp;&emsp;&emsp; ├─ &nbsp; manager_clients.py<br>
  &emsp;&emsp;&emsp;&emsp; └─ &nbsp; menu.py<br>
  &emsp;&emsp; ├─ &nbsp; README.md<br>
  &emsp;&emsp; ├─ &nbsp; setup.py<br>
  &emsp;&emsp; └─ &nbsp; test/<br>
  &emsp;&emsp;&emsp;&emsp; ├─ &nbsp; __init__.py<br>
  &emsp;&emsp;&emsp;&emsp; └─ &nbsp; test_manager_clients.py
  
  <p>The setup file has the following information:</p>
  
  <pre class="lang-py prettyprint-override"><code>#!/usr/bin/env python
  
  from setuptools import setup, find_packages
  
  with open('README.md') as file: readme = file.read()
  
  setup(name = 'gestor-clientes',
        version = '2.0',
        author = 'author',
        author_email = 'info@server.com',
        url = 'https://www.server.com/',
        description = 'Un simple gestor de clientes',
        long_description = readme,
        packages = ['manager'],
        test_suite = 'program.test',
        entry_points = {'console_scripts': ['program = manager.run:main']},
        license = 'MIT Licence',
        keywords = 'gestor clientes proyecto',
        classifiers = [
            'Development Status :: 2 - Pre-Alpha',
            'Topic :: Education',
            'Intended Audience :: Education',
            'License :: OSI Approved :: MIT License',
            'Programming Language :: Python :: 3 :: Only',
            'Operating System :: Linux',
            'Operating System :: MacOS',
            'Operating System :: Windows'
        ]
  
  
  
        )
  </code></pre>
  
  <p><strong>__init__.py</strong></p>
  
  <pre class="lang-py prettyprint-override"><code>__all__ = ['run', 'manager_clients', 'menu', 'support']
  </code></pre>
  
  <p><strong>menu.py</strong></p>
  
  <pre class="lang-py prettyprint-override"><code>"""Fichero principal del programa"""
  
  from sys import path 
  path.append('..')
  
  from menu import Menu
  
  
  def main():
      Menu.options()
  
  if __name__ == '__main__':
      main()
  </code></pre>
  
  <p><strong>manager_clients.py</strong></p>
  
  <pre class="lang-py prettyprint-override"><code>""" Administrador de clientes """
  import sys
  sys.path.append("..")
  from manager import support
  
  
  class ClientData:
  
      def __init__(self, name: str, first_surname:str, second_surname:str, birth_date:str, nationality:str, nip:str):
          self.name = name
          self.first_surname = first_surname
          self.second_surname = second_surname
          self.birth_date = birth_date
          self.nationality = nationality
          self.nip = nip
  
      def __str__(self):
          return f"{self.nip}: {self.first_surname} {self.second_surname} {self.name} {self.birth_date} {self.nationality}"
  
  #more code...
  
  </code></pre>
  
  <p><strong>menu.py</strong></p>
  
  <pre class="lang-py prettyprint-override"><code>""" Menú del programa """
  from sys import path
  path.append('..')
  
  from manager.support import clear_screen
  from manager.manager_clients import ClientAdmin
  
  class Menu:
  
      def options():
          while True:
              clear_screen()  
              print("========================\n",\
                    "|BIENVENIDO AL GESTOR|",\
                    "\n========================",\
                    "\n    Elija una opción    ",\
                    "\n------------------------",\
                    "\n[1] Lista de clientes.",\
                    "\n[2] Buscar cliente.",\
                    "\n[3] Añadir nuevo cliente.",\
                    "\n[4] Actualizar datos del cliente.",\
                    "\n[5] Borrar cliente.",\
                    "\n[6] Salir.")
  
              option = input("&gt;&gt;&gt; ")
              clear_screen()
              if option == '1':
                  print("--INFORMACIÓN DE CLIENTES DISPONIBLES--\n")
                  ClientAdmin.info_all_clients()
  
  #more code...
  </code></pre>
  
  <p><strong>support.py</strong></p>
  
  <pre class="lang-py prettyprint-override"><code>"""Funciones de ayuda"""
  from sys import path
  from os import system
  import re
  from platform import system as OS
  path.append("..")
  
  from manager import manager_clients
  
  
  
  def clear_screen():
      if OS() == "Windows":
          system('cls')
      else:
          system('clear')
  
  
  def input_text(min_len, max_len):
      while True:
          text = input("&gt; ")
          if len(text) &gt;= min_len and len(text) &lt;= max_len:
              return text
  
  
  def is_valid(nip: str):
      if not re.match('[0-9]{2}[A-Z]{3}', nip):
          return False
      for c in manager_clients.ClientAdmin.clients:
          if c.nip == nip:
              return False
      return True
  </code></pre>
  
  <p>When I run the "run.py" script from the command line the program works correctly just like when I run the tests. When I install the package using <code>pip install Gestor_Clientes_v2/</code> I get the following:</p>
  
  <pre class="lang-sh prettyprint-override"><code>Processing ./Gestor_Clientes_v2
  Building wheels for collected packages: gestor-clientes
    Building wheel for gestor-clientes (setup.py) ... done
    Created wheel for gestor-clientes: filename=gestor_clientes-2.0-cp37-none-any.whl size=6120 sha256=50337e3ed6672cf714d81103c53dd3b957f6c10722c14f952b49baa1a814dbac
    Stored in directory: /tmp/pip-ephem-wheel-cache-be04i_g5/wheels/e4/03/c1/ce19d5766499ca97b57afbdc34598a26f32ca3b9eb01754979
  Successfully built gestor-clientes
  Installing collected packages: gestor-clientes
  Successfully installed gestor-clientes-2.0
  </code></pre>
  
  <p>The packages appear in <code>pip list</code> as <kbd>gestor-clientes</kbd> but when I want to import any of the modules in "manager /" I get the error:</p>
  
  <pre class="lang-py prettyprint-override"><code>In [1]: import manager                                                
  ----------------------------------------------------------------------
  ModuleNotFoundError                  Traceback (most recent call last)
  &lt;ipython-input-1-26cb231bd30e&gt; in &lt;module&gt;
  ----&gt; 1 import manager
  
  ~/anaconda3/lib/python3.7/site-packages/manager/__init__.py in &lt;module&gt;
  ----&gt; 1 from manager import run
        2 from manager import manager_clients
        3 from manager import menu
        4 from manager import support
  
  ~/anaconda3/lib/python3.7/site-packages/manager/run.py in &lt;module&gt;
        4 path.append('..')
        5 
  ----&gt; 6 from menu import Menu
        7 
        8 
  
  ModuleNotFoundError: No module named 'menu'
  
  In [2]:
  </code></pre>
  
  <p>I have been guided by different examples of packages with a similar structure and when I install them I can import their modules.</p>
  
  <p>I am relatively new to Python and there are still many things that I don't know well and I think there is something missing in my modules and my setup file.</p>
  
  <p>I hope you can help me review the structure of my package and give me some ideas to solve my problem. Thanks in advance.</p>