Me cuesta entender cómo funciona la importación de módulos en Python (nunca antes lo había hecho en ningún otro idioma).
Digamos que tengo:
myapp/__init__.py
myapp/myapp/myapp.py
myapp/myapp/SomeObject.py
myapp/tests/TestCase.py
Ahora estoy tratando de obtener algo como esto:
myapp.py
===================
from myapp import SomeObject
# stuff ...
TestCase.py
===================
from myapp import SomeObject
# some tests on SomeObject
Sin embargo, definitivamente estoy haciendo algo mal ya que Python no puede ver que myapp
es un módulo:
ImportError: No module named myapp
import
en miTestCase.py
pero todavía me dio el mismo error. Supongo que es porque está en un subdirectorio del__init__.py
?from ... import ...
correcto?from myapp.tests import TestCase from a script outside myapp. If you're running
python TestCase.py` dentro de la carpeta de pruebas, no puede hacer importaciones relativasfrom fodername import file_name_of_my_py_code
, pero cuando intenté acceder al objeto definido enfile_name_of_my_py_code.py
él diceNameError: name 'ClassName' is not defined
La función
import
busca archivos en su entorno PYTHONPATH. variable y su directorio local. Por lo tanto, puede colocar todos sus archivos en el mismo directorio o exportar la ruta de acceso a un terminal ::fuente
export
"set PYTHONPATH =% PYTHONPATH%; C: \ path_to_myapp \ myapp \ myapp \"exportar ruta es una buena manera. Otra forma es agregar un .pth a la ubicación de los paquetes de su sitio. En mi Mac, mi python mantiene los paquetes del sitio en / Library / Python que se muestran a continuación
Creé un archivo llamado awesome.pth en /Library/Python/2.7/site-packages/awesome.pth y en el archivo coloqué la siguiente ruta que hace referencia a mis increíbles módulos
fuente
Puedes probar
porque el nombre de su proyecto es el mismo que myapp.py, lo que hace que primero busque el documento del proyecto
fuente
En su primer directorio myapp, puede agregar un archivo setup.py y agregar dos códigos python en setup.py
en su primer directorio myapp en la línea de comandos, use pip install -e. para instalar el paquete
fuente
pip install
en Windows 10 por defecto se instala en 'Archivos de programa / PythonXX / Lib / site-packages', que es un directorio que requiere privilegios administrativos. Así que solucioné mi problema ejecutando pip install como Administrador (debe abrir el símbolo del sistema como administrador incluso si ha iniciado sesión con una cuenta de administrador). Además, es más seguro llamar a pip desde python.por ejemplo, en
python -m pip install <package-name>
lugar de
pip install <package-name>
fuente
En mi caso, fue sorpresa de Windows vs Python, a pesar de que los nombres de archivo de Windows no distinguen entre mayúsculas y minúsculas, la importación de Python sí. Entonces, si tiene un
Stuff.py
archivo, debe importar este nombre tal cual.fuente
Necesitas tener
en todas las carpetas que tienen código con el que necesita interactuar. También debe especificar el nombre de la carpeta superior de su proyecto en cada importación, incluso si el archivo que intentó importar está en el mismo nivel.
fuente