Jak uruchomić plik pythona?

0

Witam serdecznie.

Mam taki plik python:


import base64
from ctypes import *
 
code = 'BgQAANtYAAJDAPkxAHwAQXIw7zcGNN4ANiox+w81HrUGOP8eUABSAEUA+1oAWQBEDv9OAFQAIABN3wAuClMAvlQPV/eKUhq9Wg5X7k58Utc' \
       'WSVq9TF5J79pBZ+5PAEsG12bTSm5GVQBM/ntSAEH7L1dj+0MAS1vvMvovewo3Ut4wDi39HjEAN6Pbl0FNe3YgPt5Q3kv3IlSevVnX1z9FMm' \
       'uCShL2WgBaG9umKADvSAApJnx75k+itwZMAEx9X0rvbkSOTXtOOF/DRy0WOW53fPYLFoMzLr0xAi3DGnevLQOCfJ/vQZ5TcBZrN0oa9k4Af' \
       'A82Q4QaDzj3q8deN6sN7zIE/1x8lbMnQdwBQi5ZT86jL2tqNAr2MwAw34xSH+uPSVPYFxZThBMzON8AMJM5wQA3MwRcMX7bNcET2jInwyed' \
       'E01HZ4dlM94qKy0DL38fNgAqeBszSxOvNIeKfHM7fCLxNQAwVkMtdzl7Xiw/YMyrFzxQACBWw+Hza7c3C93/NWuHg1OWRquPQ5KP02K9IBZ' \
       'T4QZC9oNZU7aXFiOX83U4ADJFC7ADhrNVCyOW8w9qMbEnZhdHbHxjdjIT7E4DW0M3OQuGaxYmCSSSSSr/'
 
ucl = cdll.LoadLibrary('libucl.so')
ucl.ucl_nrv2e_decompress_safe_8.argtypes = (c_char_p, c_int32, POINTER(c_char), POINTER(c_int32), c_void_p)
ucl.ucl_nrv2e_decompress_safe_8.restype = c_int32
 
data = base64.b64decode(code)
 
size = int.from_bytes(data[:4], byteorder='little')
 
buffer = (c_char * size)()
buffer_length = c_int32(size)
 
ucl.ucl_nrv2e_decompress_safe_8(data[4:], len(data), buffer, buffer_length, None)
 
result = bytes(buffer).decode('utf-16')
 
print(result)

W momencie gdy próbuję go uruchomić otrzymuję błąd:
http://serwer1356363.home.pl/test.py

Znalazłem tą bibliotekę z komunikatu o błędzie:
https://pypi.org/project/ucl/

ale nie wiem jak to uruchomić :(

Czy mógłbym prosić o pomoc?
Nie znam Pythona, a potrzebuję uruchomić ten test.py.

Bardzo proszę o pomoc.

0
  1. Musisz zainstalować na serwerze ten moduł (razem ze skompilowaną biblioteką).
  2. Kiedyś jak kombinowałem z wypisywaniem tekstu skryptem pythona w przeglądarce bez żadnego frameworka, powstał taki, działający kod:
import datetime
import sys

print ("Content-Type: text/html\n")
print (sys.version)
print "<br>"
print (datetime.datetime.now())

Piszę to, bo brak nagłówka może być przyczyną kolejnych błędów. Już teraz masz napisane:

Malformed header from CGI script

0

Ojjj tj hosting home.pl, więc instalować nie mogę.
Ja uruchamiam to na lokalnym komputerze, to otrzymuję błąd:


MBP-ukasz:psCMS2 lukasz$ python /Applications/XAMPP/xamppfiles/htdocs/test.py 
Traceback (most recent call last):
  File "/Applications/XAMPP/xamppfiles/htdocs/test.py", line 11, in <module>
    ucl = cdll.LoadLibrary('libucl.so')
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/ctypes/__init__.py", line 443, in LoadLibrary
    return self._dlltype(name)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/ctypes/__init__.py", line 365, in __init__
    self._handle = _dlopen(self._name, mode)
OSError: dlopen(libucl.so, 6): image not found

Ten plik chyba znalazłem: https://pypi.org/project/ucl/

tylko po rozpakowaniu go do katalogu z plikiem test.py nic nie dało :(

0

Jak to "po rozpakowaniu", nie Zainstalowales tego?

1

No home.pl to jest straszna kupa jeśli chodzi o konfigurację...
Płacisz za przedłużenie najtańszego hostingu 369zł, a nie masz praktycznie żadnej możliwości konfiguracji serwera...
Niby na początek płacisz teraz 5% z tego, ale potem masz wzrost ceny większy niż za przedłużanie domen...

Jak chcesz mieć kontrolę nad Pythonem na serwerze (i nad wieloma innymi rzeczami), to polecam MyDevil: https://www.mydevil.net/oferta.html
Wyjdzie Ci taniej niż 50GB na home, którego prawdopodobnie nigdy nie wykorzystasz.

0

Dziękuję bardzo za polecenie hostingu. Skorzystam jak tylko dojdę do ładu z tym :)
Póki co próbowałem to instalować na home.pl i na lokalnym komputerze. W obu przypadkach mam ten sam problem. Przepraszam za głupie pytanie, ale w jaki sposób mam zainstalować ten plik?
W jaki sposób mogę skompilować tą biblioteczkę: https://pypi.org/project/ucl/#files ?:)

1

Za taki hajs to już lepiej kupić vps na tiktalik za 10zł/m
https://tiktalik.com/pl/pricing

0

Na stronie https://pypi.org/project/ucl/ masz napisane polecenie do instalacji: pip install ucl .

0

niestety nie działa :(
Mam takie cos:
MBP-ukasz:psCMS2 lukasz$ python pip install ucl
python: can't open file 'pip': [Errno 2] No such file or directory
MBP-ukasz:psCMS2 lukasz$ clear

MBP-ukasz:psCMS2 lukasz$ python pip install ucl
python: can't open file 'pip': [Errno 2] No such file or directory
MBP-ukasz:psCMS2 lukasz$ pip install ucl
-bash: pip: command not found

0

MBP-ukasz:psCMS2 lukasz$ python pip install ucl
python: can't open file 'pip': [Errno 2] No such file or directory

0

"MBP-ukasz:psCMS2 lukasz$pip install ucl"

0
lion137 napisał(a):

"MBP-ukasz:psCMS2 lukasz$pip install ucl"

MBP-ukasz:psCMS2 lukasz$ pip install ucl
-bash: pip: command not found

0
lukmopy napisał(a):
lion137 napisał(a):

"MBP-ukasz:psCMS2 lukasz$pip install ucl"

MBP-ukasz:psCMS2 lukasz$ pip install ucl
-bash: pip: command not found

Zainstaluj pip, albo pip3.

0

Zainstalowałem PIP - jest krok naprzód :)

Teraz wyskakuje mi taki błąd przy instalacji biblioteczki:
MBP-ukasz:psCMS2 lukasz$ sudo pip install ucl
The directory '/Users/lukasz/Library/Caches/pip/http' or its parent directory is not owned by the current user and the cache has been disabled. Please check the permissions and owner of that directory. If executing pip with sudo, you may want sudo's -H flag.
The directory '/Users/lukasz/Library/Caches/pip' or its parent directory is not owned by the current user and caching wheels has been disabled. check the permissions and owner of that directory. If executing pip with sudo, you may want sudo's -H flag.
Collecting ucl
Downloading https://files.pythonhosted.org/packages/53/a5/fedfc8af32519d2fb172736b7b101239004ae30bdcc036a7c1fdeb152927/ucl-0.8.1.tar.gz
Installing collected packages: ucl
Running setup.py install for ucl ... error
Complete output from command /usr/bin/python -u -c "import setuptools, tokenize;file='/private/tmp/pip-install-DBLg7v/ucl/setup.py';f=getattr(tokenize, 'open', open)(file);code=f.read().replace('\r\n', '\n');f.close();exec(compile(code, file, 'exec'))" install --record /private/tmp/pip-record-huMBs9/install-record.txt --single-version-externally-managed --compile:
running install
running build
running build_ext
building 'ucl' extension
creating build
creating build/temp.macosx-10.14-intel-2.7
creating build/temp.macosx-10.14-intel-2.7/src
cc -fno-strict-aliasing -fno-common -dynamic -g -Os -pipe -fno-common -fno-strict-aliasing -fwrapv -DENABLE_DTRACE -DMACOSX -DNDEBUG -Wall -Wstrict-prototypes -Wshorten-64-to-32 -DNDEBUG -g -fwrapv -Os -Wall -Wstrict-prototypes -DENABLE_DTRACE -arch i386 -arch x86_64 -pipe -I/System/Library/Frameworks/Python.framework/Versions/2.7/include/python2.7 -c src/uclmodule.c -o build/temp.macosx-10.14-intel-2.7/src/uclmodule.o
src/uclmodule.c10: fatal error: 'ucl.h' file not found
#include <ucl.h>
^~~~~~~
1 error generated.
error: command 'cc' failed with exit status 1

----------------------------------------

Command "/usr/bin/python -u -c "import setuptools, tokenize;file='/private/tmp/pip-install-DBLg7v/ucl/setup.py';f=getattr(tokenize, 'open', open)(file);code=f.read().replace('\r\n', '\n');f.close();exec(compile(code, file, 'exec'))" install --record /private/tmp/pip-record-huMBs9/install-record.txt --single-version-externally-managed --compile" failed with error code 1 in /private/tmp/pip-install-DBLg7v/ucl/

0

Masz podpowiedzi w treści błędu...

  1. Nadaj odpowiednie uprawnienia katalogowi "/Users/lukasz/Library/Caches/pip/http" (komenda chmod).
  2. Użyj flagi -H w sudo.

Kombunuj ;)

No i jeszcze mógłbyś do takich rzeczy postawić sobie VirtualBoxa z Linuksem, bo i tak o hosting postawiony na Macu jeszcze trudniej niż o hosting postawiony na Windowsie :D

0

Dziękuję bardzo za odpowiedź.

Po uruchomieniu mam teraz taki błąd (kupiłem serwer na mydevil):


Traceback (most recent call last):
  File "test.py", line 12, in <module>
    ucl.ucl_nrv2e_decompress_safe_8.argtypes = (c_char_p, c_int32, POINTER(c_char), POINTER(c_int32), c_void_p)
  File "/usr/local/lib/python2.7/ctypes/__init__.py", line 379, in __getattr__
    func = self.__getitem__(name)
  File "/usr/local/lib/python2.7/ctypes/__init__.py", line 384, in __getitem__
    func = self._FuncPtr((name_or_ordinal, self))
AttributeError: Undefined symbol "ucl_nrv2e_decompress_safe_8"
0

Ciężko coś doradzić... Może zrób sobie virtualenv z Pythonem 3 i tam zainstaluj libucl?

https://wiki.mydevil.net/Python#Virtualenv

Może jakiś cynk podsunie Ci ten wątek: Odkodowywanie Aztec Code 2D - Dowody Rejestracyjne, algorytm nrv2e, darmowy kod

0

Testowałem na Pythone 3 w MyDevil i niestety ciągle ten sam problem :(
Traceback (most recent call last):
File "test.py", line 12, in <module>
ucl.ucl_nrv2e_decompress_safe_8.argtypes = (c_char_p, c_int32, POINTER(c_char), POINTER(c_int32), c_void_p)
File "/usr/local/lib/python2.7/ctypes/init.py", line 379, in getattr
func = self.getitem(name)
File "/usr/local/lib/python2.7/ctypes/init.py", line 384, in getitem
func = self._FuncPtr((name_or_ordinal, self))
AttributeError: Undefined symbol "ucl_nrv2e_decompress_safe_8"

kurcze :/

0

Jak testowałeś na 3, skoro w błędach jest 2.7?
Przelączyłeś się na ten virtualenv z Pythonem 3?

Spróbuj najpierw odpalić skrypt poleceniem python3 skrypt.py

0

mam taki wynik:
[webplay@s30]:<~>$ python3 test.py
Traceback (most recent call last):
File "test.py", line 12, in <module>
ucl.ucl_nrv2e_decompress_safe_8.argtypes = (c_char_p, c_int32, POINTER(c_char), POINTER(c_int32), c_void_p)
File "/usr/local/lib/python3.6/ctypes/init.py", line 361, in getattr
func = self.getitem(name)
File "/usr/local/lib/python3.6/ctypes/init.py", line 366, in getitem
func = self._FuncPtr((name_or_ordinal, self))
AttributeError: Undefined symbol "ucl_nrv2e_decompress_safe_8"

0

Sprawdź jakie w ogóle to ucl ma funkcje.
Tuż pod załadowaniem ucl wpisz print (dir(ucl)).
print(ucl) też może się przydać, bo może dowiemy się czy w ogóle się załadowało...

0

Mam teraz taki kod:


import base64
from ctypes import *
 
code = 'BgQAANtYAAJDAPkxAHwAQXIw7zcGNN4ANiox+w81HrUGOP8eUABSAEUA+1oAWQBEDv9OAFQAIABN3wAuClMAvlQPV/eKUhq9Wg5X7k58Utc' \
       'WSVq9TF5J79pBZ+5PAEsG12bTSm5GVQBM/ntSAEH7L1dj+0MAS1vvMvovewo3Ut4wDi39HjEAN6Pbl0FNe3YgPt5Q3kv3IlSevVnX1z9FMm' \
       'uCShL2WgBaG9umKADvSAApJnx75k+itwZMAEx9X0rvbkSOTXtOOF/DRy0WOW53fPYLFoMzLr0xAi3DGnevLQOCfJ/vQZ5TcBZrN0oa9k4Af' \
       'A82Q4QaDzj3q8deN6sN7zIE/1x8lbMnQdwBQi5ZT86jL2tqNAr2MwAw34xSH+uPSVPYFxZThBMzON8AMJM5wQA3MwRcMX7bNcET2jInwyed' \
       'E01HZ4dlM94qKy0DL38fNgAqeBszSxOvNIeKfHM7fCLxNQAwVkMtdzl7Xiw/YMyrFzxQACBWw+Hza7c3C93/NWuHg1OWRquPQ5KP02K9IBZ' \
       'T4QZC9oNZU7aXFiOX83U4ADJFC7ADhrNVCyOW8w9qMbEnZhdHbHxjdjIT7E4DW0M3OQuGaxYmCSSSSSr/'
 
print (dir(ucl))
print(ucl) 
 
ucl = cdll.LoadLibrary('libucl.so')
ucl.ucl_nrv2e_decompress_safe_8.argtypes = (c_char_p, c_int32, POINTER(c_char), POINTER(c_int32), c_void_p)
ucl.ucl_nrv2e_decompress_safe_8.restype = c_int32
 
data = base64.b64decode(code)
 
size = int.from_bytes(data[:4], byteorder='little')
 
buffer = (c_char * size)()
buffer_length = c_int32(size)
 
ucl.ucl_nrv2e_decompress_safe_8(data[4:], len(data), buffer, buffer_length, None)
 
result = bytes(buffer).decode('utf-16')
 
print(result)

który po uruchomieniu zwraca:

python3 test.py
Traceback (most recent call last):
File "test.py", line 11, in <module>
print (dir(ucl))
NameError: name 'ucl' is not defined

0

Napisałem Tuż pod załadowaniem, a nie tuż przed...

napisz te diry po linii ucl = cdll.LoadLibrary('libucl.so').

Przed tą linią to naturalne, że ucl jest niezadeklarowane.

0

Fakt :/ Przepraszam.
python3 test.py

['_FuncPtr', '__class__', '__delattr__', '__dict__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattr__', '__getattribute__', '__getitem__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__le__', '__lt__', '__module__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__', '_func_flags_', '_func_restype_', '_handle', '_name']
<CDLL 'libucl.so', handle 80064ac00 at 0x8007d8e10>
Traceback (most recent call last):
  File "test.py", line 17, in <module>
    ucl.ucl_nrv2e_decompress_safe_8.argtypes = (c_char_p, c_int32, POINTER(c_char), POINTER(c_int32), c_void_p)
  File "/usr/local/lib/python3.6/ctypes/__init__.py", line 361, in __getattr__
    func = self.__getitem__(name)
  File "/usr/local/lib/python3.6/ctypes/__init__.py", line 366, in __getitem__
    func = self._FuncPtr((name_or_ordinal, self))
AttributeError: Undefined symbol "ucl_nrv2e_decompress_safe_8"
0

U mnie dir wypisuje to samo...
A twój skrypt daje wynik bez żadnych błędów:

jason@jason-VirtualBox ~/Pulpit $ python3 a.py
XXC1|AAA0007046|1465058|PREZYDENT M. ST. WARSZAWY|DZIELNICA MOKOTÓW|UL. RAKOWIECKA 25/27|02-517 WARSZAWA|DMI 1PNK|TOYOTA|E12J|ZZE120(H)||COROLLA|JTDKM28E100089120|2013-11-06|---|KOWALSKI JAN|JAN|KOWALSKI||82091711022|02-517|WARSZAWA||WAŁBRZYSKA|24|30|KOWALSKA MARIA|MARIA|KOWALSKA||88030971022|02-517|WARSZAWA||WAŁBRZYSKA|24|30|1655|1655|2655|1205|M1|e11*2001/116*0180*04|2|1000|450|---|1398,00|71,00|P |2005-07-01|5|---|SAMOCHÓD OSOBOWY|---|2005|---|8,82|AAA0000000|02650008000158|03|02|000|2000NNNNNNNN|009002001|
jason@jason-VirtualBox ~/Pulpit $ 


Mint pod VirtualBoxem.

0

Kurczę,to co może być problemem? Wersja Linuxa? Kupiłem tego MyDevila.... Biblioteczka inaczej zainstalowana?

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