Otwarcie skryptu.py w Delphi

0

Witam,

czy jest możliwość, że po kliknięciu Buttona w Delphi uruchomiony zostanie dowolny skrypt w Pythonie (skrypt.py)?
Jeżeli tak, jak to zrobić :-)

Pozdrawiam,
Magda

2

Jeśli na tym komputerze jest zainstalowany interpreter pythona to możesz użyć ShellExecute żeby uruchomic ten skrypt.

0

Okej, dziękuję :)

0
ShellExecute(Handle, 'open', 'C:\Users\Magda\Desktop\Python\skrypt.py', nil, nil, parametr_6); 

Co oznacza ostatni, szósty parametr? Na stronie internetowej znalazłam, że jest to sposób uruchomienia aplikacji i że trzeba wpisać jedną z wartości:
SW_SHOW - pokazanie aplikacji.
SW_MINIZE - tryp zminimalizowany.
SW_MAXIMIZED - tryb zmaksymilizowany.
SW_SHOWNORMAL - otwarcie okna w domyślnych rozmiarach, przypisanych przez programistę.

Jednak u mnie nie odnajduje tych argumentów, tylko każe wpisać liczbę całkowitą.

Co do całej procedury kod:

ShellExecute(Handle, 'open', 'C:\Users\Magda\Desktop\Python\skrypt.py', nil, nil, 5); 

rzeczywiście otwiera skrypt.py (ta czarna konsola), ale instrukcje ze skryptu w ogóle nie są wykonywane... Jak tą funkcją otworzyć skrypt w Pythonie aby instrukcje, które zawarte są w skrypcie zostały wykonane?

Pozdrawiam i z góry dziękuję za pomoc :-)

1
  1. Te ostatnie parametry to enum, czyli int ale o ograniczonych wartościach z etykietkami. Nie przejmuj się tym, to akurat bez znaczenia byleby wartość była 0-3 ;)
  2. Ja bym zrobił inaczej, tzn otworzył interpreter pythona i podał ten plik jako parametr:
ShellExecute(Handle, 'open', 'C:\python\python.exe', 'C:\Users\Magda\Desktop\Python\skrypt.py', nil, 0); 

Jakoś tak. Bo pewnie nie masz w systemie tak ustawionego że dwuklik na plik .py powoduje jego odpalenie?

0

A interpreter to chodzi o to:

2b67d9107bc71.png

Zastosowałam się do Twojej propozycji:

ShellExecute(Handle, 'open', 'C:\Python27\python.exe', 'C:\Users\Magda\Desktop\Python\arcgis.py', nil, 0);

Ale niestety to nic nie daje...
Jak wstawiam w ostatni parametr np. 1 lub 2 to przez ułamek sekundy mi mignie jakaś czarna konsolka, ale to wszystko, nie ma nawet mowy o wykonaniu instrukcji, które zawarte są w skrypcie -.-

Ale już chyba wiem dlaczego. Bo skrypt wywala błąd: NameError: name 'arcpy' is not defined podczas próby załączenia modułu arcpy:

import arcpy

Dlaczego...? :(

dodanie obrazka do załączników posta - @furious programming

1

Jesteś pewny, że masz to zainstalowane? pip install arcpy w konsoli twojego OS'a.

Edit: Ten arcpy to chyba część jakiegoś ArcGIS i ma własny interpeter, który musisz uruchamiać zamiast standardowego. Więcej o tym tutaj//gis.stackexchange.com/questions/55506/why-cant-i-import-arcpy

1

@madzieq a umiesz ty ten skrypt odpalić w ogóle? Jak uruchomisz interpreter to możesz go uruchomić? Bo mam wrażenie że nie...

0

No pewnie jest to spowodowane tym, że nie mam w zakładce Python27 >>> Lib tego modułu arcpy... Ale skąd go zaimportować? Producent ESRI jakoś nie wspominal o żadnym imporcie/instalacji itp...

0

wg linka z pomocą zastosowałam się do:

>>> import os
>>> os.__file__

i zwróciło mi tak jak na stronie: C:\\Python27\\ArcGIS10.2\\Lib\\os.pyc

A co z tym kodem zrobić? Co to właściwie jest? jakaś dziwna, obca mi składnia.

@echo off
echo.
echo.   Setting environment for ArcGIS python 2.7
echo.
set PYTHONHOME=C:\Python27\ArcGIS10.1
set PYTHONPATH=%PYTHONHOME%;%PYTHONHOME%\Lib;%PYTHONHOME%\DLLs
set PATH=%PYTHONHOME%;%PYTHONHOME%\Scripts;%path%
set py
python --version

No i przeniosłam też folder arcpy do lokalizacji C:\Python27\Lib, ale dalej jest błąd tym razem nieco inny (mniej więcej jak ze strony internetowej z pomocy).

Traceback (most recent call last):
File "C:\Python27\Lib\site-packages\pythonwin\pywin\framework\scriptutils.py", line 326, in RunScript
exec codeObject in main.dict

  • File "C:\Users\Magda\Desktop\Python\arcgis.py", line 1, in <module>*
    • import arcpy*
      File "C:\Python27\lib\arcpy_init_.py", line 21, in <module>
    • f*rom arcpy.geoprocessing import gp//
      File "C:\Python27\lib\arcpy\geoprocessing_init_.py", line 14, in <module>
      *from _base import **
      File "C:\Python27\lib\arcpy\geoprocessing_base.py", line 14, in <module>
      import arcgisscripting
      ImportError: No module named arcgisscripting

Nie wiem, nie umiem sobie z tym poradzić ... -.-

1

Zapisz ten skrypt z rozszerzeniem *.bat i uruchom. Zanim to zrobisz musisz chyba jeszcze zmienić ścieżkę w tym skrypcie z set PYTHONHOME=C:\Python27\ArcGIS10.1 na set PYTHONHOME=C:\Python27\ArcGIS10.2

1

@madzieq Nie musisz nic robić z tym drugim skryptem jeśli nie chcesz. W programie w delphi zamień

ShellExecute(Handle, 'open', 'C:\Python27\python.exe', 'C:\Users\Magda\Desktop\Python\arcgis.py', nil, 0);

na

ShellExecute(Handle, 'open', 'C:\Python27\ArcGIS10.2\python.exe', 'C:\Users\Magda\Desktop\Python\arcgis.py', nil, 0);
0

ale mi nie przepuszcza tej komendy:

set PYTHONHOME = "C:\Python27\ArcGIS10.2"

Jakiś błąd składniowy, wyrzuca mi: Failed to run script - syntax error

Możecie podać przykład jakiegoś najprostszego skryptu w pythonie, który zostanie wykonany przez tą funkcję?
Bo jaki skrypt bym nie stworzyła (już bez tego modułu arcpy) to po wciśnięciu buttona nic się nie dzieje...

ShellExecute(Handle, 'open', 'C:\Python27\ArcGIS10.2\python.exe', 'C:\Users\Magda\Desktop\Python\arcgis.py', nil, 0);

1 użytkowników online, w tym zalogowanych: 0, gości: 1