Je ne sais pas si le problème est connu, et j'imagine qu'il devrait être
facile à résoudre (mais l'expérience apprend à être méfiant) :
Il s'agit de scripts Python lancé depuis Emacs, et des modules situés
dans le répertoire courant provoquent :
ImportError: No module named <nom module>
En mode direct depuis Emacs même message d'erreur. Pourtant Tkinter est
trouvé, donc c'est seulement les modules situés dans le répertoire
courant qui ne sont pas trouvés.
En revanche si Python lancé depuis le terminal (l'histoire se passe sous
ubuntu) les mêmes modules sont trouvés.
Je pourrais peut-être essayer de mettre mes modules aux même endroit que
ceux fourni avec Python, mais il me semble que tel n'est pas l'usage.
Je pourrais peut-être essayer de mettre mes modules aux même en droit que ceux fourni avec Python, mais il me semble que tel n'est pas l'usage.
Bonjour,
après quelques tests, j'ai vu qu'il fallait d'abord charger les fichie rs C-c C-l et ensuite indiquer quel fichier on souhaitait utiliser avec C-c C-c
# ex1.py
def hello (): print("Hello")
# ex2.py
from ex1 import hello
def test (): hello()
C-x C-f ex1.py C-c C-l RET C-x C-f ex2.py C-c C-l RET C-c C-c C-c C-z test() RET
Je pourrais peut-être essayer de mettre mes modules aux même en droit
que ceux fourni avec Python, mais il me semble que tel n'est pas
l'usage.
Bonjour,
après quelques tests, j'ai vu qu'il fallait d'abord charger les fichie rs
C-c C-l et ensuite indiquer quel fichier on souhaitait utiliser avec
C-c C-c
# ex1.py
def hello ():
print("Hello")
# ex2.py
from ex1 import hello
def test ():
hello()
C-x C-f ex1.py
C-c C-l RET
C-x C-f ex2.py
C-c C-l RET
C-c C-c
C-c C-z
test() RET
Je pourrais peut-être essayer de mettre mes modules aux même en droit que ceux fourni avec Python, mais il me semble que tel n'est pas l'usage.
Bonjour,
après quelques tests, j'ai vu qu'il fallait d'abord charger les fichie rs C-c C-l et ensuite indiquer quel fichier on souhaitait utiliser avec C-c C-c
# ex1.py
def hello (): print("Hello")
# ex2.py
from ex1 import hello
def test (): hello()
C-x C-f ex1.py C-c C-l RET C-x C-f ex2.py C-c C-l RET C-c C-c C-c C-z test() RET
Vivien MOREAU
Bonjour,
lionmarron writes:
Je ne sais pas si le problème est connu, et j'imagine qu'il devrait être facile à résoudre (mais l'expérience apprend à être méfiant) :
Il s'agit de scripts Python lancé depuis Emacs, et des modules situés dans le répertoire courant provoquent :
ImportError: No module named <nom module>
En mode direct depuis Emacs même message d'erreur. Pourtant Tkinter est trouvé, donc c'est seulement les modules situés dans le répertoire courant qui ne sont pas trouvés.
Es-tu sûr que ce que tu appelles le répertoire courant est réellement le répertoire courant de ton Emacs ? As-tu lancé Emacs depuis ce répertoire ? Ou bien as-tu lancé la fonction cd d'Emacs pour changer de répertoire courant ? Si ce n'est pas le cas, il y a de fortes chances que le répertoire courant de ton Emacs soit en fait ${HOME}.
En revanche si Python lancé depuis le terminal (l'histoire se passe sous ubuntu) les mêmes modules sont trouvés.
Je pourrais peut-être essayer de mettre mes modules aux même endroit que ceux fourni avec Python, mais il me semble que tel n'est pas l'usage.
Je ne sais pas si le problème est connu, et j'imagine qu'il devrait
être facile à résoudre (mais l'expérience apprend à être méfiant) :
Il s'agit de scripts Python lancé depuis Emacs, et des modules situés
dans le répertoire courant provoquent :
ImportError: No module named <nom module>
En mode direct depuis Emacs même message d'erreur. Pourtant Tkinter
est trouvé, donc c'est seulement les modules situés dans le répertoire
courant qui ne sont pas trouvés.
Es-tu sûr que ce que tu appelles le répertoire courant est réellement le
répertoire courant de ton Emacs ? As-tu lancé Emacs depuis ce répertoire
? Ou bien as-tu lancé la fonction cd d'Emacs pour changer de répertoire
courant ? Si ce n'est pas le cas, il y a de fortes chances que le
répertoire courant de ton Emacs soit en fait ${HOME}.
En revanche si Python lancé depuis le terminal (l'histoire se passe
sous ubuntu) les mêmes modules sont trouvés.
Je pourrais peut-être essayer de mettre mes modules aux même endroit
que ceux fourni avec Python, mais il me semble que tel n'est pas
l'usage.
Je ne sais pas si le problème est connu, et j'imagine qu'il devrait être facile à résoudre (mais l'expérience apprend à être méfiant) :
Il s'agit de scripts Python lancé depuis Emacs, et des modules situés dans le répertoire courant provoquent :
ImportError: No module named <nom module>
En mode direct depuis Emacs même message d'erreur. Pourtant Tkinter est trouvé, donc c'est seulement les modules situés dans le répertoire courant qui ne sont pas trouvés.
Es-tu sûr que ce que tu appelles le répertoire courant est réellement le répertoire courant de ton Emacs ? As-tu lancé Emacs depuis ce répertoire ? Ou bien as-tu lancé la fonction cd d'Emacs pour changer de répertoire courant ? Si ce n'est pas le cas, il y a de fortes chances que le répertoire courant de ton Emacs soit en fait ${HOME}.
En revanche si Python lancé depuis le terminal (l'histoire se passe sous ubuntu) les mêmes modules sont trouvés.
Je pourrais peut-être essayer de mettre mes modules aux même endroit que ceux fourni avec Python, mais il me semble que tel n'est pas l'usage.
Effectivement, ça serait très sale et inutile :-)
-- Librement, Vivien
Paul Gaborit
À (at) Mon, 28 Nov 2011 01:58:37 +0100, lionmarron écrivait (wrote):
Il s'agit de scripts Python lancé depuis Emacs, et des modules situés dans le répertoire courant provoquent :
ImportError: No module named <nom module>
En mode direct depuis Emacs même message d'erreur. Pourtant Tkinter est trouvé, donc c'est seulement les modules situés dans le répertoire courant qui ne sont pas trouvés.
En revanche si Python lancé depuis le terminal (l'histoire se passe sous ubuntu) les mêmes modules sont trouvés.
Je pourrais peut-être essayer de mettre mes modules aux même endroit que ceux fourni avec Python, mais il me semble que tel n'est pas l'usage.
Ce n'est pas un problème lié à Emacs mais à Python. Il faut regarder du côté de la variable sys.path (et éventuellement du côté de site.getusersitepackages()).
Exécuter le script suivant dans les différents contextes (emacs, terminal, etc.) et vous comprendrez la différence :
# début python import sys import site print sys.path print site.getusersitepackages() # fin python
-- Paul Gaborit - <http://perso.mines-albi.fr/~gaborit/>
À (at) Mon, 28 Nov 2011 01:58:37 +0100,
lionmarron <andre.hetzel@club-internet.fr> écrivait (wrote):
Il s'agit de scripts Python lancé depuis Emacs, et des modules situés
dans le répertoire courant provoquent :
ImportError: No module named <nom module>
En mode direct depuis Emacs même message d'erreur. Pourtant Tkinter
est trouvé, donc c'est seulement les modules situés dans le répertoire
courant qui ne sont pas trouvés.
En revanche si Python lancé depuis le terminal (l'histoire se passe
sous ubuntu) les mêmes modules sont trouvés.
Je pourrais peut-être essayer de mettre mes modules aux même endroit
que ceux fourni avec Python, mais il me semble que tel n'est pas
l'usage.
Ce n'est pas un problème lié à Emacs mais à Python. Il faut regarder du
côté de la variable sys.path (et éventuellement du côté de
site.getusersitepackages()).
Exécuter le script suivant dans les différents contextes (emacs,
terminal, etc.) et vous comprendrez la différence :
# début python
import sys
import site
print sys.path
print site.getusersitepackages()
# fin python
--
Paul Gaborit - <http://perso.mines-albi.fr/~gaborit/>
À (at) Mon, 28 Nov 2011 01:58:37 +0100, lionmarron écrivait (wrote):
Il s'agit de scripts Python lancé depuis Emacs, et des modules situés dans le répertoire courant provoquent :
ImportError: No module named <nom module>
En mode direct depuis Emacs même message d'erreur. Pourtant Tkinter est trouvé, donc c'est seulement les modules situés dans le répertoire courant qui ne sont pas trouvés.
En revanche si Python lancé depuis le terminal (l'histoire se passe sous ubuntu) les mêmes modules sont trouvés.
Je pourrais peut-être essayer de mettre mes modules aux même endroit que ceux fourni avec Python, mais il me semble que tel n'est pas l'usage.
Ce n'est pas un problème lié à Emacs mais à Python. Il faut regarder du côté de la variable sys.path (et éventuellement du côté de site.getusersitepackages()).
Exécuter le script suivant dans les différents contextes (emacs, terminal, etc.) et vous comprendrez la différence :
# début python import sys import site print sys.path print site.getusersitepackages() # fin python
-- Paul Gaborit - <http://perso.mines-albi.fr/~gaborit/>
lionmarron
Le 28/11/2011 08:45, Paul Gaborit a écrit :
Ce n'est pas un problème lié à Emacs mais à Python. Il faut regarder du côté de la variable sys.path (et éventuellement du côté de site.getusersitepackages()).
Exécuter le script suivant dans les différents contextes (emacs, terminal, etc.) et vous comprendrez la différence :
# début python import sys import site print sys.path print site.getusersitepackages() # fin python
C'est là que je me rend compte des limites de mes connaissance du système Linux, ou de l'informatique en général. Il faudra sans doute que je consulte ma documentation Linux ; toujours est-il que je ne comprends pas bien ce qu'affiche ce script.
print sys.path n'affiche pas les mêmes choses depuis Emacs et depuis le terminal. On dirait une liste au format python et le premier élément de la liste n'est pas le même. Je comprends que la différence doit venir de ceci : Avant lancer un script depuis le terminal je me mets dans le dossier de ce script, alors qu'avant de lancer un script depuis Emacs c'est peut-être seulement la fonction de chargement de fichier qui se met dans ledit dossier.
print site.getusersitepackages() affiche la même chose depuis Emacs ou le terminal :
/home/andre/.local/lib/python2.7/site-packages
Je me suis dit que cela voulait peut-être dire qu'il fallait mettre mes modules dans site-packages, mais je préfère être sûr car je trouve bizarre de les mettre dans un dossier caché.
De plus les sous-dossiers pointés n'existent pas, donc je suppose qu'il faut sans doute les créer, mais là aussi j'aimerais autant être sûr. (On ne sait jamais.)
-- lionmarron
Le 28/11/2011 08:45, Paul Gaborit a écrit :
Ce n'est pas un problème lié à Emacs mais à Python. Il faut regarder du
côté de la variable sys.path (et éventuellement du côté de
site.getusersitepackages()).
Exécuter le script suivant dans les différents contextes (emacs,
terminal, etc.) et vous comprendrez la différence :
# début python
import sys
import site
print sys.path
print site.getusersitepackages()
# fin python
C'est là que je me rend compte des limites de mes connaissance du
système Linux, ou de l'informatique en général. Il faudra sans doute que
je consulte ma documentation Linux ; toujours est-il que je ne comprends
pas bien ce qu'affiche ce script.
print sys.path n'affiche pas les mêmes choses depuis Emacs et depuis le
terminal. On dirait une liste au format python et le premier élément de
la liste n'est pas le même. Je comprends que la différence doit venir de
ceci : Avant lancer un script depuis le terminal je me mets dans le
dossier de ce script, alors qu'avant de lancer un script depuis Emacs
c'est peut-être seulement la fonction de chargement de fichier qui se
met dans ledit dossier.
print site.getusersitepackages() affiche la même chose depuis Emacs ou
le terminal :
/home/andre/.local/lib/python2.7/site-packages
Je me suis dit que cela voulait peut-être dire qu'il fallait mettre mes
modules dans site-packages, mais je préfère être sûr car je trouve
bizarre de les mettre dans un dossier caché.
De plus les sous-dossiers pointés n'existent pas, donc je suppose qu'il
faut sans doute les créer, mais là aussi j'aimerais autant être sûr. (On
ne sait jamais.)
Ce n'est pas un problème lié à Emacs mais à Python. Il faut regarder du côté de la variable sys.path (et éventuellement du côté de site.getusersitepackages()).
Exécuter le script suivant dans les différents contextes (emacs, terminal, etc.) et vous comprendrez la différence :
# début python import sys import site print sys.path print site.getusersitepackages() # fin python
C'est là que je me rend compte des limites de mes connaissance du système Linux, ou de l'informatique en général. Il faudra sans doute que je consulte ma documentation Linux ; toujours est-il que je ne comprends pas bien ce qu'affiche ce script.
print sys.path n'affiche pas les mêmes choses depuis Emacs et depuis le terminal. On dirait une liste au format python et le premier élément de la liste n'est pas le même. Je comprends que la différence doit venir de ceci : Avant lancer un script depuis le terminal je me mets dans le dossier de ce script, alors qu'avant de lancer un script depuis Emacs c'est peut-être seulement la fonction de chargement de fichier qui se met dans ledit dossier.
print site.getusersitepackages() affiche la même chose depuis Emacs ou le terminal :
/home/andre/.local/lib/python2.7/site-packages
Je me suis dit que cela voulait peut-être dire qu'il fallait mettre mes modules dans site-packages, mais je préfère être sûr car je trouve bizarre de les mettre dans un dossier caché.
De plus les sous-dossiers pointés n'existent pas, donc je suppose qu'il faut sans doute les créer, mais là aussi j'aimerais autant être sûr. (On ne sait jamais.)
-- lionmarron
lionmarron
On 28 nov, 17:07, lionmarron wrote:
/home/andre/.local/lib/python2.7/site-packages
Je me suis dit que cela voulait peut-être dire qu'il fallait mettre mes modules dans site-packages, mais je préfère être sûr car je trouv e bizarre de les mettre dans un dossier caché.
De plus les sous-dossiers pointés n'existent pas,
Ce que j'ai voulu dire est que /home/andre/.local existent, alors que /lib/python2.7/site-packages n'existent pas.
lionmarron
On 28 nov, 17:07, lionmarron <andre.het...@club-internet.fr> wrote:
/home/andre/.local/lib/python2.7/site-packages
Je me suis dit que cela voulait peut-être dire qu'il fallait mettre mes
modules dans site-packages, mais je préfère être sûr car je trouv e
bizarre de les mettre dans un dossier caché.
De plus les sous-dossiers pointés n'existent pas,
Ce que j'ai voulu dire est que /home/andre/.local existent, alors
que /lib/python2.7/site-packages n'existent pas.
Je me suis dit que cela voulait peut-être dire qu'il fallait mettre mes modules dans site-packages, mais je préfère être sûr car je trouv e bizarre de les mettre dans un dossier caché.
De plus les sous-dossiers pointés n'existent pas,
Ce que j'ai voulu dire est que /home/andre/.local existent, alors que /lib/python2.7/site-packages n'existent pas.
lionmarron
lionmarron
Le 28/11/2011 08:20, Vivien MOREAU a écrit :
Es-tu sûr que ce que tu appelles le répertoire courant est réellement le répertoire courant de ton Emacs ? As-tu lancé Emacs depuis ce répertoire ? Ou bien as-tu lancé la fonction cd d'Emacs pour changer de répertoire courant ?
Le fait est que je ne connais pas la fonction cd d'Emacs. Cette solution sera peut-être adaptée, mais comme on m'en propose apparemment deux autres je ne sais pas encore chercher cette fonction (sauf pour voir que je ne la trouvais pas dans les menus).
Si ce n'est pas le cas, il y a de fortes chances que le répertoire courant de ton Emacs soit en fait ${HOME}.
J'ai déjà pas mal de documentation (dont un livre en anglais), mais je ne la comprends pas toujours et je n'ai pas vraiment eu le temps de l'étudier.
-- lionmarron
Le 28/11/2011 08:20, Vivien MOREAU a écrit :
Es-tu sûr que ce que tu appelles le répertoire courant est réellement le
répertoire courant de ton Emacs ? As-tu lancé Emacs depuis ce répertoire
? Ou bien as-tu lancé la fonction cd d'Emacs pour changer de répertoire
courant ?
Le fait est que je ne connais pas la fonction cd d'Emacs. Cette solution
sera peut-être adaptée, mais comme on m'en propose apparemment deux
autres je ne sais pas encore chercher cette fonction (sauf pour voir que
je ne la trouvais pas dans les menus).
Si ce n'est pas le cas, il y a de fortes chances que le
répertoire courant de ton Emacs soit en fait ${HOME}.
J'ai déjà pas mal de documentation (dont un livre en anglais), mais je
ne la comprends pas toujours et je n'ai pas vraiment eu le temps de
l'étudier.
Es-tu sûr que ce que tu appelles le répertoire courant est réellement le répertoire courant de ton Emacs ? As-tu lancé Emacs depuis ce répertoire ? Ou bien as-tu lancé la fonction cd d'Emacs pour changer de répertoire courant ?
Le fait est que je ne connais pas la fonction cd d'Emacs. Cette solution sera peut-être adaptée, mais comme on m'en propose apparemment deux autres je ne sais pas encore chercher cette fonction (sauf pour voir que je ne la trouvais pas dans les menus).
Si ce n'est pas le cas, il y a de fortes chances que le répertoire courant de ton Emacs soit en fait ${HOME}.
J'ai déjà pas mal de documentation (dont un livre en anglais), mais je ne la comprends pas toujours et je n'ai pas vraiment eu le temps de l'étudier.
-- lionmarron
lionmarron
Le 28/11/2011 08:17, Daimrod a écrit :
après quelques tests, j'ai vu qu'il fallait d'abord charger les fichiers C-c C-l et ensuite indiquer quel fichier on souhaitait utiliser avec C-c C-c
# ex1.py
def hello (): print("Hello")
# ex2.py
from ex1 import hello
def test (): hello()
C-x C-f ex1.py C-c C-l RET C-x C-f ex2.py C-c C-l RET C-c C-c C-c C-z test() RET
Je ne sais pas si cette solution est la plus adaptée et je n'ai pas l'impression de bien la comprendre, mais elle à l'air de marcher et donc c'est celle que je vais utiliser dans un premier temps.
Donc merci pour cette réponse ainsi que pour celles de Vivien et de Paul.
-- lionmarron
Le 28/11/2011 08:17, Daimrod a écrit :
après quelques tests, j'ai vu qu'il fallait d'abord charger les fichiers
C-c C-l et ensuite indiquer quel fichier on souhaitait utiliser avec
C-c C-c
# ex1.py
def hello ():
print("Hello")
# ex2.py
from ex1 import hello
def test ():
hello()
C-x C-f ex1.py
C-c C-l RET
C-x C-f ex2.py
C-c C-l RET
C-c C-c
C-c C-z
test() RET
Je ne sais pas si cette solution est la plus adaptée et je n'ai pas
l'impression de bien la comprendre, mais elle à l'air de marcher et donc
c'est celle que je vais utiliser dans un premier temps.
Donc merci pour cette réponse ainsi que pour celles de Vivien et de Paul.
après quelques tests, j'ai vu qu'il fallait d'abord charger les fichiers C-c C-l et ensuite indiquer quel fichier on souhaitait utiliser avec C-c C-c
# ex1.py
def hello (): print("Hello")
# ex2.py
from ex1 import hello
def test (): hello()
C-x C-f ex1.py C-c C-l RET C-x C-f ex2.py C-c C-l RET C-c C-c C-c C-z test() RET
Je ne sais pas si cette solution est la plus adaptée et je n'ai pas l'impression de bien la comprendre, mais elle à l'air de marcher et donc c'est celle que je vais utiliser dans un premier temps.
Donc merci pour cette réponse ainsi que pour celles de Vivien et de Paul.
après quelques tests, j'ai vu qu'il fallait d'abord charger les fic hiers C-c C-l et ensuite indiquer quel fichier on souhaitait utiliser avec C-c C-c
# ex1.py
def hello (): print("Hello")
# ex2.py
from ex1 import hello
def test (): hello()
C-x C-f ex1.py C-c C-l RET C-x C-f ex2.py C-c C-l RET C-c C-c C-c C-z test() RET
après quelques tests, j'ai vu qu'il fallait d'abord charger les fic hiers
C-c C-l et ensuite indiquer quel fichier on souhaitait utiliser avec
C-c C-c
# ex1.py
def hello ():
print("Hello")
# ex2.py
from ex1 import hello
def test ():
hello()
C-x C-f ex1.py
C-c C-l RET
C-x C-f ex2.py
C-c C-l RET
C-c C-c
C-c C-z
test() RET
après quelques tests, j'ai vu qu'il fallait d'abord charger les fic hiers C-c C-l et ensuite indiquer quel fichier on souhaitait utiliser avec C-c C-c
# ex1.py
def hello (): print("Hello")
# ex2.py
from ex1 import hello
def test (): hello()
C-x C-f ex1.py C-c C-l RET C-x C-f ex2.py C-c C-l RET C-c C-c C-c C-z test() RET