pythonne fonctionne pas si vous exécutez python 3, python3est utilisé à la place.
pzkpfw
41
Execfile n'existe plus en python3, et exec () ne semble pas fonctionner d'une manière ou d'une autre ... je ne sais pas ce que je fais mal. pourriez-vous mettre à jour la réponse?
temporaire_user_name
existe-t-il un moyen de fournir à stdinpartir d'un fichier comme l'utilisation <du script d'exécution dans le execfile().? @ s-lott
bhanu
9
@pzkpfw python peut pointer vers n'importe quelle version de python. J'ai vu des environnements avec seulement python v3 vers lesquels pythonpointe python3.
StockB
2
@pzkpfw Cela dépend de l' pythonexécutable que le système trouve en parcourant les dossiers de la variable d'environnement PATH.
Cela exécutera un script et mettra toutes ses variables globales dans la portée globale de l'interpréteur (le comportement normal dans la plupart des environnements de script).
Tu es mon héros! Je me bats avec des trucs vraiment bizarres depuis des jours où os.getcwd () a dit une chose, mais glob ("*") a travaillé dans un autre répertoire ... Merci! Je vous remercie!
pallevillesen
Existe-t-il un moyen de passer un paramètre au script? ce qui suit ne fonctionne pas: exec (ouvrez "setup.py install"). read (), globals ())
ben
1
@ben qui ne fonctionnera pas car openlit directement le code du script. Pour passer des arguments, regardez cette réponse , mais au lieu de execfile, utilisez évidemment execet opencomme indiqué ci-dessus.
Nico
47
Surpris, je ne l'ai pas encore vu. Vous pouvez exécuter un fichier, puis laisser l'interpréteur ouvert une fois l'exécution terminée à l'aide de l' -ioption:
J'essaie d'utiliser des variables et des paramètres de ce fichier, de ne pas invoquer un processus distinct.
Eh bien, simplement importer le fichier avec import filename(moins .py, doit être dans le même répertoire ou sur votre PYTHONPATH) exécutera le fichier, rendant ses variables, fonctions, classes, etc. disponibles dans lefilename.variable espace de noms.
Donc, si vous avez cheddar.pyavec la variable spam et les oeufs de fonction - vous pouvez les importer avec import cheddar, accéder à la variable avec cheddar.spamet exécuter la fonction en appelantcheddar.eggs()
Si vous avez du code en cheddar.pydehors d'une fonction, il sera exécuté immédiatement, mais la création d'applications qui exécutent des éléments lors de l'importation rendra difficile la réutilisation de votre code. Si possible, mettez tout à l'intérieur des fonctions ou des classes.
Cela n'utilisera pas l'espace de noms global, comme l'exige la question. Utilisez à la placefrom filename import *
Ricardo Cruz
La question ne mentionne pas spécifiquement l'utilisation d'un espace de noms global, c'est peut-être ce que souhaite l'OP, mais cela ne ressort pas clairement de la question.
ryanpcmcquen
13
De mon point de vue, la meilleure façon est:
import yourfile
et après avoir modifié yourfile.py
reload(yourfile)
ou
import imp;
imp.reload(yourfile)in python3
mais cela rendra la fonction et les classes comme ça: yourfile.function1, yourfile.class1 .....
Si vous ne pouvez pas les accepter, la solution finale est:
Je ne suis pas un expert mais c'est ce que j'ai remarqué:
si votre code est mycode.py par exemple, et que vous tapez simplement 'import mycode', Python l'exécutera mais ne mettra pas toutes vos variables à la disposition de l'interpréteur. J'ai trouvé que vous devez taper réellement 'from mycode import *' si vous voulez mettre toutes les variables à la disposition de l'interpréteur.
Réponses:
Plusieurs façons.
De la coquille
De l'intérieur IDLE, appuyez sur F5 .
Si vous tapez de manière interactive, essayez ceci: ( Python 2 uniquement !)
Pour Python3 , utilisez:
la source
python
ne fonctionne pas si vous exécutez python 3,python3
est utilisé à la place.stdin
partir d'un fichier comme l'utilisation<
du script d'exécution dans leexecfile()
.? @ s-lottpython
pointepython3
.python
exécutable que le système trouve en parcourant les dossiers de la variable d'environnementPATH
.Pour Python 2:
Pour Python 3:
Consultez la documentation . Si vous utilisez Python 3.0, consultez cette question .
Voir la réponse de @ S.Lott pour un exemple de la façon dont vous accédez aux globaux à partir de filename.py après l'avoir exécuté.
la source
Python 2 + Python 3
Cela exécutera un script et mettra toutes ses variables globales dans la portée globale de l'interpréteur (le comportement normal dans la plupart des environnements de script).
exec
Documentation Python 3la source
open
lit directement le code du script. Pour passer des arguments, regardez cette réponse , mais au lieu deexecfile
, utilisez évidemmentexec
etopen
comme indiqué ci-dessus.Surpris, je ne l'ai pas encore vu. Vous pouvez exécuter un fichier, puis laisser l'interpréteur ouvert une fois l'exécution terminée à l'aide de l'
-i
option:la source
Eh bien, simplement importer le fichier avec
import filename
(moins .py, doit être dans le même répertoire ou sur votrePYTHONPATH
) exécutera le fichier, rendant ses variables, fonctions, classes, etc. disponibles dans lefilename.variable
espace de noms.Donc, si vous avez
cheddar.py
avec la variable spam et les oeufs de fonction - vous pouvez les importer avecimport cheddar
, accéder à la variable aveccheddar.spam
et exécuter la fonction en appelantcheddar.eggs()
Si vous avez du code en
cheddar.py
dehors d'une fonction, il sera exécuté immédiatement, mais la création d'applications qui exécutent des éléments lors de l'importation rendra difficile la réutilisation de votre code. Si possible, mettez tout à l'intérieur des fonctions ou des classes.la source
from filename import *
De mon point de vue, la meilleure façon est:
et après avoir modifié yourfile.py
ou
mais cela rendra la fonction et les classes comme ça: yourfile.function1, yourfile.class1 .....
Si vous ne pouvez pas les accepter, la solution finale est:
la source
Je ne suis pas un expert mais c'est ce que j'ai remarqué:
si votre code est mycode.py par exemple, et que vous tapez simplement 'import mycode', Python l'exécutera mais ne mettra pas toutes vos variables à la disposition de l'interpréteur. J'ai trouvé que vous devez taper réellement 'from mycode import *' si vous voulez mettre toutes les variables à la disposition de l'interpréteur.
la source
Faites,
Assurez-vous de ne pas ajouter l'extension .py. Si votre fichier .py dans le sous-répertoire utilise,
la source
Pour python3, utilisez soit avec
xxxx = name
ofyourfile
.la source
Pour Python 3:
Assurez-vous que vous êtes dans le bon répertoire avant d'exécuter la commande.
Pour exécuter un fichier à partir d'un répertoire différent, vous pouvez utiliser la commande ci-dessous:
la source
Supposons que vous souhaitiez les fonctionnalités suivantes:
__name__ == '__main__'
a la valeur True pour que les scripts se comportent correctement comme des scripts.La
exec(open('foo.py').read())
fonction échoue 1 Laimport foo
stratégie échoue fonction 2Pour obtenir les deux, vous avez besoin de ceci:
la source