"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