web-dev-qa-db-fra.com

Exécution du script python dans ipython

Est-il possible d'exécuter un script python (pas de module) depuis ipython sans indiquer son chemin? J'ai essayé de définir PYTHONPATH mais cela ne semble fonctionner que pour les modules. Je voudrais exécuter

%run my_script.py

sans être dans le répertoire contenant le fichier.

110
Tyler Durden

depuis le répertoire de "my_script.py", vous pouvez simplement faire:

%run ./my_script.py
99
rakke

Comment exécuter un script dans Ipython

import os
filepath='C:\\Users\\User\\FolderWithPythonScript' 
os.chdir(filepath)
%run pyFileInThatFilePath.py

Ça devrait le faire

23
CubeBot88

En python, il n'y a pas de différence entre les modules et les scripts; Vous pouvez exécuter des scripts et des modules. Le fichier doit être sur le chemin d'accès pythonAuto, car python doit pouvoir trouver le fichier en question. Si python est exécuté à partir d'un répertoire, celui-ci est automatiquement ajouté au chemin python.

Reportez-vous à Quel est le meilleur moyen d'appeler un script Python à partir d'un autre script Python? == pour plus d'informations sur les modules et les scripts

Il y a aussi une fonction intégrée execfile (filename) qui fera ce que vous voulez

16
Snakes and Coffee

La magie %run a un paramètre file_Finder qu'il utilise pour obtenir le chemin complet du fichier à exécuter (voir here ); comme vous le constatez, il suffit de regarder dans le répertoire en cours, en ajoutant ".py" si nécessaire.

Il ne semble pas y avoir de moyen de spécifier quel fichier Finder utiliser à partir de la magie %run, mais rien ne vous en empêche définir votre propre commande magique qui appelle %run avec un fichier Finder approprié.

En tant que très hack méchant, vous pouvez remplacer le file_Finder par défaut par votre propre:

IPython.core.magics.execution.ExecutionMagics.run.im_func.func_defaults[2] = my_file_Finder

Pour être honnête, l'API IPython évolue au même rythme que la définition de votre propre magie.

15
ecatmur

for Python 3.6.5 importer os os.getcwd () runfile ('testing.py')

1
Alinafe