Solución:
Cuando llama a una secuencia de comandos, la secuencia de comandos de llamada puede acceder al espacio de nombres de la secuencia de comandos llamada. (En tu caso, primero puede acceder al espacio de nombres de segundo.) Sin embargo, lo que está pidiendo es al revés. Su variable está definida en la secuencia de comandos de llamada y desea que la secuencia de comandos llamada acceda al espacio de nombres de la persona que llama.
Ya se indica una respuesta en esta publicación SO, en la pregunta en sí:
Acceder al espacio de nombres del módulo de llamada
Pero solo lo explicaré aquí en su contexto.
Para obtener lo que desea en su caso, comience el script llamado con la siguiente línea:
from __main__ import *
Esto le permite acceder al espacio de nombres (todas las variables y funciones) del script de llamada.
Así que ahora su script de llamada es, como antes:
x=5
import second
y el script llamado es:
from __main__ import *
print x
Esto debería funcionar bien.
use el siguiente script:
first.py:
x=5
second.py
import first
print first.x
esto imprimirá el valor de x. Se debe hacer referencia a los datos de script siempre importados con el nombre del script, como en first.x
Para evitar la contaminación del espacio de nombres, importe las variables que desee de forma individual: from __main__ import x
, etcétera. De lo contrario, terminará con conflictos de nombres de los que no estaba al tanto.