Question

Eh bien, je veux utiliser web2py parce qu'il est assez agréable .. J'ai juste besoin de changer le répertoire de travail dans le répertoire où tous mes modules / bibliothèques / apps sont si je peux les utiliser. Je veux être en mesure d'importer mon programme réel lorsque j'utilise l'interface web2py / applications. Je dois le faire au lieu de mettre toutes mes applications et des trucs dans le dossier web2py ... Je suis en train de donner mon programme un frontend web sans mettre le programme dans le dossier web2py .. Désolé si cela est difficile à comprendre.

Était-ce utile?

La solution

os.chdir vous permet de changer le répertoire de travail du système d'exploitation, mais à vos besoins (permettant l'importation d'un tas de modules et c qui sont contraints de vivre dans un endroit étrange), il semble préférable d'ajouter les répertoires nécessaires pour sys.path à la place.

Autres conseils

Dans tout programme Python multi-thread (et non seulement Python) vous ne devriez pas utiliser os.chdir et vous ne devriez pas changer sys.path lorsque vous avez plus d'un fil conducteur. Il n'est pas sûr, car il affecte les autres threads. En outre, vous ne devriez pas sys.path.append () dans une boucle, car elle risque d'exploser.

Toutes les cadres web sont des demandes et multi-filetée sont exécutés en boucle. Certains cadres web ne vous permettent pas d'installer / désinstaller des applications sans redémarrer le serveur Web et donc si os.chdir / sys.path.append ne sont exécutées au démarrage alors il n'y a pas de problème.

Dans web2py nous voulons être en mesure d'installer / désinstaller des applications sans redémarrer le serveur Web. Nous voulons que les applications soient très dynamiques (par exemple définir des modèles basés sur les informations fournies à la demande http). Nous voulons que chaque application ait ses propres modèles dossier et nous voulons une séparation complète entre les applications de sorte que si deux applications doivent différentes versions du même module, ils ne sont pas en conflit les uns avec les autres, donc nous fournir des API pour le faire (request.folder , local_import).

Vous pouvez toujours utiliser le os.chdir normal et sys.path.append mais vous devriez le faire en dehors des fils (et ce n'est pas un problème spécifique web2py). Vous pouvez utiliser l'importation où vous voulez comme vous le feriez dans tout autre programme Python.

Je suggère fortement déplacer cette discussion à la liste de diffusion web2py.

Je devais faire cette chose. J'ai quelques modules que je voulais utiliser de mes contrôleurs. Si vous voulez être en mesure d'utiliser le code qui se trouve dans le répertoire des modules dans le contrôleur, vous pouvez utiliser:

# use this in your controller code
impname = local_import('module_in_modules', reload=True)
# reload true  will ensure that it will re load whenever
# there are changes to the module

Jay

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top