J'utilise Mac 10.13.6 avec Python 3.7. J'utilise PyCharm pour le développement. Bien que je puisse exécuter des commandes correctement dans la console de gestion PyCharm, lorsque j'essaie d'exécuter les mêmes commandes dans un terminal, j'obtiens des erreurs se plaignant que Django n'est pas installé. Par exemple
localhost:mainpage_project davea$ which python /usr/local/bin/python localhost:mainpage_project davea$ echo $PYTHONPATH /usr/local/bin/python
J'ai peut-être mal défini mon PYTHONPATH, mais je l'ai défini sur mon exécutable Python
localhost:mainpage_project davea$ python manage.py runstats Traceback (most recent call last): File "manage.py", line 8, in <module> from django.core.management import execute_from_command_line ModuleNotFoundError: No module named 'django' The above exception was the direct cause of the following exception: Traceback (most recent call last): File "manage.py", line 14, in <module> ) from exc ImportError: Couldn't import Django. Are you sure it's installed and available on your PYTHONPATH environment variable? Did you forget to activate a virtual environment?
Quelle devrait être la valeur de PYTHONPATH ? Je suis capable d'exécuter la commande correctement dans PyCharm, ce n'est que dans le terminal que les choses commencent à générer des erreurs.
3 Réponses :
Dans pycharm, Django est installé (recherchez un dossier d'environnement).
Pour l'utiliser dans le terminal en dehors de pycharm, recherchez le dossier d'environnement et activez-le (source / bin / activate).
S'il n'existe pas d'environnement virtuel, utilisez ce guide pour en créer un: https: //docs.python.org/3/library/venv.html
Vous pouvez également (NON RECOMMANDÉ!) l'installer à l'échelle du système: pip installer django
Lancer "source / bin / activate" m'a permis d'exécuter ma commande dans un terminal. Donc, si je voulais configurer un cron pour exécuter ma commande périodiquement, devrais-je toujours exécuter la "source / bin / activate" avant toute commande "python manage.py command"?
Oui! voici une référence pour cron et virtualenvs: stackoverflow.com/a/3287063/1067213
Accédez à l'endroit où vous essayez d'exécuter et définissez votre PTYHONPATH sur ce répertoire:
export PYTHONPATH=.
Dans votre terminal, vous pouvez accéder au dossier venv de votre projet pycharm et faire:
localhost:mainpage_project davea$ python manage.py runstats
Ensuite, vous exécutez votre script:
pip install django
Vous pouvez également installer python à l'échelle du système (non recommandé), puis exécuter votre script:
(venv) localhost:mainpage_project davea$ python manage.py runstats
Ensuite, vous exécutez votre script:
cd mainpage_project/venv source bin/activate
Utilisez-vous un env python lorsque vous codez dans pycharm ou que les modules sont installés pour votre python global? Avez-vous essayé d'exécuter
pip install django
dans votre terminal?Je pense que j'utilise un environnement virtuel, au moins dans mon répertoire principal de projet, j'ai un sous-répertoire "venv". C'est ce que tu veux dire?
Oui, alors dans ce cas, vous avez 2 instances différentes de python, celle de pycharm utilise votre venv avec le module django installé, celle de votre terminal utilise python à l'échelle du système sans django installé