importando un paquete desde un subdir o ruta relativa

Aquí está mi configuración de directorio:

mydir ├── script1.py └── shared ├── otherstuff ├── script2.py └── pkg ├── box.py └── __init__.py 

script2.py comienza con

 import pkg 

y funciona muy bien. Cuando incluyo la misma línea en script1.py , obtengo:

 Traceback (most recent call last): File "script1.py", line 1, in  import pkg 

¿Hay alguna buena manera de obtener una syntax tan sencilla de trabajar en script1.py ? He estado leyendo sobre PYTHONPATH y sys.path durante la última hora, pero estoy tratando de hacer que algunas funciones básicas estén disponibles para mi repo, y no puedo creer que requiera modificar PYTHONPATH cada vez que quiera ejecutar un script.

¿Que me estoy perdiendo aqui? ¿Cuál es la mejor manera de convertir pkg en script1.py ?

Tu tienes que hacer:

 from shared import pkg 

Además, su directorio shared debe tener un archivo __init__.py

Probé en Python 3.x, puedes hacer cualquiera de

 import shared.pkg 

o

 from shared import pkg 

Si no desea crear el archivo __init__.py en shared y usar import shared.pkg , puede import shared.pkg haciendo lo siguiente:

 import sys sys.path.insert(0, 'shared') import pkg