Django-fr

Forum

#1 09-03-2011 21:11:47

sunse8
Invité

Questions d'un débutant (.pyc et __init__.py)

Bonjour à tous,

J'ai découvert Python et Django il y a 2 jours seulement et j'aurais juste deux petites questions, si vous permettez... smile

1. Est-ce qu'il est possible de désactiver la sauvegarde des fichiers .pyc dans un environement de développement ?

2. Est-ce qu'il est possible de gérer automatiquement l'ajout et la suppression des fichiers __inity__.py ? Ou mieux : de permettre l'importation de tous mes répertoires/fichiers en tant que modules ?

Simplement pour une question de visibilité et de simplicité dans le développement de mon projet... Je pourrais évidemment coder quelques scripts pour gérer tout ça, mais je voulais d'abord savoir s'il existait des outils standards ?

Merci beaucoup pour votre aide (et votre indulgence).

Sébastien

#2 10-03-2011 10:43:54

quinode
Membre
Lieu : Auvergne
Inscription : 14-10-2010
Messages : 89
Site Web

Re : Questions d'un débutant (.pyc et __init__.py)

Bonjour Sébastien

1. Oui, par exemple avec Git, tu ajoute tout simplement `*.pyc` à ton fichier .gitignore

2. Si tu utilise la commande `startapp`de Django, le fichier __init__.py est créé tout seul, sinon tu peux tout à fait créer un dossier, mettre un fichier python avec une fonction dedans , et ajouter un fichier __init__.py à coté du fichier dans le même dossier, ta fonction sera disponible dans les deux cas

Hors ligne

#3 14-04-2015 19:38:22

frague
Membre
Inscription : 29-11-2010
Messages : 24

Re : Questions d'un débutant (.pyc et __init__.py)

Salut Sébastien,

Quelques réponses à tes questions de python...

Le 09/03/2011 21:11, Sébastien Durand a écrit :
> Bonjour à tous,
>
> J'ai découvert Python et Django il y a 2 jours seulement et j'aurais
> juste deux petites questions, si vous permettez... smile
>
> 1. Est-ce qu'il est possible de désactiver la sauvegarde des fichiers
> .pyc dans un environement de développement ?
Non, il n'y a pas moyen de supprimer ces fichiers, ils sont générés par
l'interpréteur, c'est du code pré-compilé pour accélérer les
traitements. Tu peux toutefois passer l'argument -B à ton interpréteur,
mais ça n'a pas beaucoup d'interrêt : un IDE va les masquer pour toi, et
tu dois les ajouter dans ton .gitignore ou svn:ignore ou ... selon ton VCS.
> 2. Est-ce qu'il est possible de gérer automatiquement l'ajout et la
> suppression des fichiers __inity__.py ? Ou mieux : de permettre
> l'importation de tous mes répertoires/fichiers en tant que modules ?
Là, par contre les __init__.py, il ne faut surtout pas les supprimer !
ils permettent à python de repérer les packages !
par exemple :

views/__init__.py
views/trucs.py

te permet de définir des espaces de nommage "views"  et "views.trucs" et
donc de fractionner ton code en blocs logiques.
Si il n'y a pas de __init__.py dans un dossier, ce n'est pas un package,
c'est juste un dossier : pas moyen d'importer quoi que ce soit depuis ce
dossier, sauf à ajouter le dossier dans le PYTHONPATH, et là c'est
l'horreur : chaque dossier qui contient du code doit être importé, et il
n'y a plus d'espaces de nommage...

Pour info, le __init__.py peut être vide.

> Simplement pour une question de visibilité et de simplicité dans le
> développement de mon projet... Je pourrais évidemment coder quelques
> scripts pour gérer tout ça, mais je voulais d'abord savoir s'il existait
> des outils standards ?
>
> Merci beaucoup pour votre aide (et votre indulgence).
>
> Sébastien
> _______________________________________________
> django mailing list
> django _AT_ lists.afpy.org
> http://lists.afpy.org/mailman/listinfo/django


frague

Hors ligne

#4 15-04-2015 16:21:31

Joachim Jablon
Membre
Inscription : 21-07-2016
Messages : 1

Re : Questions d'un débutant (.pyc et __init__.py)

Bonjour,

Sauf erreur, le mail de Sébastien Durand daterait de 2011, j'espère qu'il
avait trouvé une réponse entre temps smile

Le 14 avril 2015 20:38, François GUÉRIN <frague59 _AT_ gmail.com> a écrit :

> Le 09/03/2011 21:11, Sébastien Durand a écrit :
>
>> 1. Est-ce qu'il est possible de désactiver la sauvegarde des fichiers
>
> .pyc dans un environement de développement ?
>
>
>
> Non, il n'y a pas moyen de supprimer ces fichiers, ils sont générés par
> l'interpréteur, c'est du code pré-compilé pour accélérer les traitements.
> Tu peux toutefois passer l'argument -B à ton interpréteur, mais ça n'a pas
> beaucoup d'intérêt : un IDE va les masquer pour toi, et tu dois les ajouter
> dans ton .gitignore ou svn:ignore ou ... selon ton VCS.


Je ne suis pas entièrement d'accord avec cette réponse, il existe une
variable d'environnement, PYTHONDONTWRITEBYTECODE, qui est détectée par
Python qui n'écrit pas de fichier .pyc.
D'autre part, dans plusieurs distributions (entre autres Ubuntu) un
executable "pyclean" existe qui sert justement à supprimer tous ces
fichiers .pyc du répertoire courant et de tous les sous-répertoires.
Enfin, le contrôle de ces fichiers pyc est très important : si on supprime
ou déplace un fichier .py sans supprimer l'éventuel fichier .pyc associé,
le code correspondant sera toujours vu par python, et cela peut
sérieusement causer des soucis dans le code.
Exemple : vous créez un module csv.py, et dans un module au sein du même
package vous tentez d'importer le module "csv" de la librairie standard.
Bien sûr vous vous retrouvez à importer le module local csv.py (à ceci près
des règles d'import relatif et absolu). Vous vous en rendez compte, et vous
renommez csv.py en csv_project.py, vous réessayez, et patatras, même bug :
python a lu votre csv.pyc qui est resté là au lieu du csv de la lib
standard. Dans ce cas c'est un exemple simple. Quand on part sur des cas
avec des imports automatiques etc, ca peut être beaucoup plus complexe à
détecter.

Cordialement,

Joachim Jablon

Hors ligne

Pied de page des forums