"ValueError: Empty module name" on basic import

alain MONTMORY Alain.montmory at thalesgroup.com
Mon Oct 2 07:37:35 EDT 2006



alain MONTMORY a écrit :
> Thank for your response :-)
>
> I have tried (it's my first try ..)  :
> ./TestOfficiel TestPythonFoo multiply 3 2
> and i get :
> [montmory at esoppe1 swigCallPython]$ ./TestOfficiel TestPythonFoo 
> multiply 3 2
> ImportError: No module named TestPythonFoo
> Failed to load "TestPythonFoo"
>
> Then i tried what you suggest below :
> [montmory at esoppe1 swigCallPython]$ python
> Python 2.3.4 (#2, Aug 19 2004, 15:49:40)
> [GCC 3.4.1 (Mandrakelinux (Alpha 3.4.1-3mdk)] on linux2
> Type "help", "copyright", "credits" or "license" for more information.
> >>> __import__("TestPythonFoo")
> <module 'TestPythonFoo' from 'TestPythonFoo.pyc'>
>
> and it works !!!
> why this doesn't work with the api
> pModule = PyImport_Import(pName);
>
>   
> pModule is null after the call
>   
>
> is there a PYTHONPATH to set or semething else...
I put :
export PYTHONPATH=$PYTHONPATH:<dot>
and it works,
thank you,
your response put me on the way...


>
> thanks
>
> Alain
>
> John Machin a écrit :
>> alain MONTMORY wrote:
>>   
>>> Hello everybody,
>>>
>>> I am a newbie to python so I hope I am at the right place to expose my
>>> problem..... :-[
>>>
>>> I am working on linux mandrake 10.1 with python :
>>> python -V
>>> Python 2.3.4
>>> I am trying o run the example which stay in the documentation in paragraph
>>> http://www.python.org/doc/2.4.2/ext/pure-embedding.html 5.3 Pure Embedding
>>> I download the code example from
>>> http://www.python.org/doc/2.4.2/ext/run-func.txt
>>> I call the file "TestOfficiel.c" and I compile it with :
>>> gcc -g -I/usr/include/python2.3/ TestOfficiel.c -o TestOfficiel
>>> -lpython2.3 -ldl
>>> all is OK (or seems to be...).
>>> as stated in the documentation  I creat a file "TestPythonFoo.py" which
>>> contain
>>> "
>>> def multiply(a,b):
>>>     print "Will compute", a, "times", b
>>>     c = 0
>>>     for i in range(0, a):
>>>         c = c + b
>>>     return c
>>> "
>>> I launch
>>> ./TestOfficiel ./TestPythonFoo.py multiply 3 2
>>> and as a result :
>>> ValueError: Empty module name
>>> Failed to load "./TestPythonFoo.py"
>>>     
>>
>> This is (I believe) because of the "." at the front.
>>
>>   
>>> if I try an absolute path to the python file :
>>> ./TestOfficiel `pwd`/TestPythonFoo.py multiply 3 2
>>> I obtain :
>>> ImportError: No module named
>>> /space/ESOPPE_PROJET/Outils/SwigPython/swigCallPython/TestPythonFoo.py
>>>     
>>
>> It's quite correct, there never could be a module named that. The name
>> of your module is TestPythonFoo -- so all you should have to do is
>>     ./TestOfficiel TestPythonFoo multiply 3 2
>>
>>   
>>> Failed to load
>>> "/space/ESOPPE_PROJET/Outils/SwigPython/swigCallPython/TestPythonFoo.py"
>>>     
>>
>>
>>   
>>> Of course the file exist :
>>> [montmory at esoppe1 swigCallPython]$ ll
>>> /space/ESOPPE_PROJET/Outils/SwigPython/swigCallPython/TestPythonFoo.py
>>> -rwxrwx--x  1 montmory esoppe 126 sep 29 14:04
>>> /space/ESOPPE_PROJET/Outils/SwigPython/swigCallPython/TestPythonFoo.py*
>>>
>>> I found lot of post about "ValueError: Empty module name" but no clear
>>> solution (clear for me...).
>>> What's wrong ?
>>> my python version?
>>> Additionnal informations :
>>> gcc version 3.4.1 (Mandrakelinux 10.1 3.4.1-4mdk)
>>>
>>> Thanks for your help,
>>>
>>> best regards,
>>>
>>> Alain
>>>
>>>
>>>
>>>
>>> --------------070105030901000008070407
>>> Content-Type: text/plain
>>> Content-Disposition: inline;
>>> 	filename="TestOfficiel.c"
>>> X-Google-AttachSize: 2022
>>>
>>> #include <Python.h>
>>>
>>> int
>>> main(int argc, char *argv[])
>>> {
>>>     PyObject *pName, *pModule, *pDict, *pFunc;
>>>     PyObject *pArgs, *pValue;
>>>     int i;
>>>
>>>     if (argc < 3) {
>>>         fprintf(stderr,"Usage: call pythonfile funcname [args]\n");
>>>     
>>
>> "pythonfile" is confusing; it should be "modulename".
>>
>>
>>   
> Yes you are right, but i left the example file "as it is"
>>>         return 1;
>>>     }
>>>
>>>     Py_Initialize();
>>>     pName = PyString_FromString(argv[1]);
>>>     /* Error checking of pName left out */
>>>
>>>     pModule = PyImport_Import(pName);
>>>     
>>
>> As the docs for this function say, it just calls the same routine that
>> is called by the __import__ built-in function. One can experiment with
>> that:
>>
>>
>> OS-prompt>copy con foo.py
>> print 'hello fubar world'
>> ^Z
>>         1 file(s) copied.
>>
>> OS-prompt>python
>> Python 2.4.3 (#69, Mar 29 2006, 17:35:34) [MSC v.1310 32 bit (Intel)]
>> on win32
>> Type "help", "copyright", "credits" or "license" for more information.
>>   
>>>>> __import__("foo")
>>>>>         
>> hello fubar world
>> <module 'foo' from 'foo.py'>
>>   
>>>>> __import__("foo.py")
>>>>>         
>> Traceback (most recent call last):
>>   File "<stdin>", line 1, in ?
>> ImportError: No module named py
>>   
>>>>> __import__("")
>>>>>         
>> Traceback (most recent call last):
>>   File "<stdin>", line 1, in ?
>> ValueError: Empty module name
>>   
>>>>> __import__(r".\foo")
>>>>>         
>> Traceback (most recent call last):
>>   File "<stdin>", line 1, in ?
>> ValueError: Empty module name
>>   
>>>>> __import__(r"./foo")
>>>>>         
>> Traceback (most recent call last):
>>   File "<stdin>", line 1, in ?
>> ValueError: Empty module name
>>   
>>>>> __import__(r"/foo")
>>>>>         
>> Traceback (most recent call last):
>>   File "<stdin>", line 1, in ?
>> ImportError: No module named /foo
>>   
>>>>> __import__(r".foo")
>>>>>         
>> Traceback (most recent call last):
>>   File "<stdin>", line 1, in ?
>> ValueError: Empty module name
>>   
>>
>> Hmmm ... "empty module name" is rather misleading when it starts with a
>> "." -- I can feel a bugfix^^^^^^ enhancement request coming on :-)
>>
>> HTH,
>> John
>>
>>   
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/python-list/attachments/20061002/24d87d4e/attachment.html>


More information about the Python-list mailing list