
I think that I have successfully installed CLPython. What I want to do is to call Python functions, defined in programs written by others, from Allegro Common Lisp. So here is a test Python program called test.py: ----------------------------- # A Python file to use to test clpython def test(): print "I am a Python function." return "I am done." print("The Python test file has been run.") ----------------------------- I loaded clpython, and did (note: this wasn't the first time I imported test, so test.fasl and test.pyc already existed.): ----------------------------- cl-user(3): (clpython:run "import test; test.test()") Warning: *import-recompiled-files* = #<equal hash-table with 0 entries> Warning: /net/projects/shapiro/clpython/test.fasl not in #<equal hash-table with 0 entries> ; Fast loading /net/projects/shapiro/clpython/test.fasl The Python test file has been run. Warning: *import-recompiled-files* = #<equal hash-table with 0 entries> Warning: /net/projects/shapiro/clpython/test.fasl not in #<equal hash-table with 0 entries> I am a Python function. "I am done." ----------------------------- First question: Why the Warning messages? How can I get rid of them? Notice that I can make use of the values returned by the Python function: ----------------------------- cl-user(4): (setf x (clpython:run "import test; test.test()")) Warning: *import-recompiled-files* = #<equal hash-table with 0 entries> Warning: /net/projects/shapiro/clpython/test.fasl not in #<equal hash-table with 0 entries> ; Fast loading /net/projects/shapiro/clpython/test.fasl The Python test file has been run. Warning: *import-recompiled-files* = #<equal hash-table with 0 entries> Warning: /net/projects/shapiro/clpython/test.fasl not in #<equal hash-table with 0 entries> I am a Python function. "I am done." cl-user(5): x "I am done." ----------------------------- What I'd really like to do now is to call test.test() as much as possible as though it were a Common Lisp function. One possible way is: ----------------------------- cl-user(6): (clpython:run "test.test()") Error: NameError: Variable `test' is unbound. [condition type: NameError] Restart actions (select using :continue): 0: Enter a Lisp value to use for `test'. 1: Return to Top Level (an "abort" restart). 2: Abort entirely from this (lisp) process. ----------------------------- But, the name of the function does not seem to survive from one call of clpython:run to another. Final question: How can I do this? stu -- Stuart C. Shapiro Professor, Department of Computer Science and Engineering University at Buffalo, The State University of New York 201 Bell Hall, Box 602000, Buffalo, NY 14260-2000, U.S.A. PHONE: 716-645-3180x125 FAX: 716-645-3464 shapiro@cse.buffalo.edu http://www.cse.buffalo.edu/~shapiro/