J'ai du mal à comprendre comment l'importation de modules fonctionne en Python (je ne l'ai jamais fait dans aucun autre langage avant non plus).
Disons que j'ai:
myapp/__init__.py
myapp/myapp/myapp.py
myapp/myapp/SomeObject.py
myapp/tests/TestCase.py
Maintenant, j'essaye d'obtenir quelque chose comme ça:
myapp.py
===================
from myapp import SomeObject
# stuff ...
TestCase.py
===================
from myapp import SomeObject
# some tests on SomeObject
Cependant, je fais définitivement quelque chose de mal car Python ne peut pas voir qu'il myapp
s'agit d'un module:
ImportError: No module named myapp
import
dans monTestCase.py
mais cela m'a toujours donné la même erreur. Je suppose que c'est parce que c'est dans un sous-répertoire du__init__.py
?from ... import ...
droit?from myapp.tests import TestCase from a script outside myapp. If you're running
python TestCase.py` dans le dossier de tests, vous ne pouvez pas effectuer d'importations relativesfrom fodername import file_name_of_my_py_code
, mais lorsque j'ai essayé d'accéder à l'objet défini,file_name_of_my_py_code.py
elle ditNameError: name 'ClassName' is not defined
La fonction
import
recherche des fichiers dans votre env PYTHONPATH. variable et votre répertoire local. Vous pouvez donc soit mettre tous vos fichiers dans le même répertoire, soit exporter le chemin en tapant dans un terminal:la source
export
nous avons "set PYTHONPATH =% PYTHONPATH%; C: \ path_to_myapp \ myapp \ myapp \"le chemin d'exportation est un bon moyen. Une autre façon consiste à ajouter un .pth à l'emplacement de vos packages de site. Sur mon mac, mon python conserve les packages de site dans / Library / Python ci-dessous
J'ai créé un fichier appelé awesome.pth dans /Library/Python/2.7/site-packages/awesome.pth et dans le fichier, mettez le chemin suivant qui fait référence à mes super modules
la source
Tu peux essayer
car le nom de votre projet est le même que myapp.py, ce qui lui permet de rechercher d'abord le document de projet
la source
Dans votre premier répertoire myapp, vous pouvez ajouter un fichier setup.py et ajouter deux codes python dans setup.py
dans votre premier répertoire myapp en ligne de commande, utilisez pip install -e. pour installer le package
la source
pip install
sur Windows 10, l'installation par défaut dans 'Program Files / PythonXX / Lib / site-packages' qui est un répertoire qui nécessite des privilèges administratifs. J'ai donc résolu mon problème en exécutant pip install en tant qu'administrateur (vous devez ouvrir l'invite de commande en tant qu'administrateur même si vous êtes connecté avec un compte administrateur). De plus, il est plus sûr d'appeler pip depuis python.par exemple
python -m pip install <package-name>
au lieu de
pip install <package-name>
la source
Dans mon cas, c'était une surprise Windows vs Python, bien que les noms de fichiers Windows ne soient pas sensibles à la casse, l'importation Python l'est. Donc, si vous avez un
Stuff.py
fichier, vous devez importer ce nom tel quel.la source
Vous devez avoir
dans tous les dossiers contenant du code avec lequel vous devez interagir. Vous devez également spécifier le nom du dossier supérieur de votre projet à chaque importation, même si le fichier que vous avez essayé d'importer est au même niveau.
la source