pythondelphipython4delphi

I can't use python for delphi under python2.6


My environment is delphi7 and Python2.6.6, python for delphi installed.

But when I run a test app, I got a runtime error.

Microsoft Visual C++ Runtime Library
Runtime Error!
program:E:\programming\delphi\p4dtest\dd\project1.exe

This application has requeste, the Runtime to terminate it in an unusual way.  
Please contact the application's support team for more information.

test.py:

import ctypes
print 'hello'

delphi app main:

procedure TForm1.Button1Click(Sender: TObject);
begin
      PyExeFile('test.py', PE);    
end;

It runs ok if I remove the line "import ctypes", but failed if ctypes is imported.

I googled and found an issue on this: http://code.google.com/p/python4delphi/wiki/P4DPython26.

According to the article, I compile the res file and put the res file and Microsoft.VC90.CRT.manifest even msvcr90.dll in the project folder, add XP_UAC.RES in the project file, but I still got the error. Then I reinstalled the Microsoft Visual C++ 2008 SP1 Redistributable Package, but it seems not the problem. Did anyone use the P4D under python2.6 successfully, please tell me how I can make it.

==================================
Now i have solved the ploblem by myself through reading the issues on the official website of P4D:

1、In the pythonengine property tab

‍keep set  “UseLastKnownVersion” to True

‍keep ‍set   "DLLName"  to  python26

2、on your PythonEngine component and adjust your define:

{$DEFINE PYTHON26}

which you can do in the project options of Delphi 7.  
Just add PYTHON26 to the "conditional defines" dialog box.

By the way, I don't mean to confuse everyone of my question, if it does, I'm sorry for that, so please don't devote others' question arbitrarily if you didn't try by yourself.


Solution

  • Maybe I did't describe my question clearly. Now i have solved the ploblem by myself through reading the issues on the official website of P4D:

    1、In the pythonengine property tab
    
    ‍keep set  “UseLastKnownVersion” to True
    
    ‍keep ‍set   "DLLName"  to  python26
    
    2、On your PythonEngine component and adjust your define:
    
    {$DEFINE PYTHON26}
    
    which you can do in the project options of Delphi 7.  
    Just add PYTHON26 to the "conditional defines" dialog box