Mostrando entradas con la etiqueta python. Mostrar todas las entradas
Mostrando entradas con la etiqueta python. Mostrar todas las entradas

lunes, 19 de octubre de 2020

Measure the amount of color in the picture

 If you want to measure the amount of color an image has (in percentage), you can use the following repo:


https://github.com/Eitol/document_color_meter

jueves, 12 de octubre de 2017

Install Python from sources (Fedora 26)

Primero descarga el XS tarball de aqui:

Luego intentando instalar python desde los sources me dió este error:
"Solve: zipimport.ZipImportError: can't decompress data; zlib not available"

Para solucionarlo:



Luego haces:
dnf install zlib-devel python-gzipstream.noarch openssl-devel
./configure
make -j12
make install


Probado en Fedora 26


Ref:
https://askubuntu.com/questions/661039/trouble-with-zip-support-in-custom-python-build-zipimport-zipimporterror-cant

domingo, 6 de agosto de 2017

Python Scaffolding

Primero instala pyscaffold, que es el programa que permite hacer Scaffolding.
pip install --upgrade pyscaffold

Comando corto:
putup NOMBRE -l mit -d "DESCRIPCION" --with-tox --with-travis

Para más info:
http://pyscaffold.readthedocs.io/en/v2.5.7/examples.html

viernes, 3 de febrero de 2017

Create object and add attributes to it: Python

Creamos el objeto args y le agregamos los atributos recid y sigb64
args = SimpleNamespace()
setattr(args, 'recid', "receptor1")
setattr(args, 'sigb64', "AfGLmNB==")

Luego podemos hacer args.recid o args.sigb64


jueves, 2 de febrero de 2017

Instalar módulo de python en formato tar.gz

Si por ejemplo quieres instalar el módulo netifaces en un sitio donde no hay conexión a internet

Primero te bajas el paquete de:

https://pypi.python.org/simple/

Luego lo instalas

pip install ./netifaces-0.10.4.tar.gz
pip3 install ./netifaces-0.10.4.tar.gz

y listo



Hosting

miércoles, 26 de octubre de 2016

Solventar problema PyCharm "No module name" ...

Si intentas importar un módulo A desde uno B y a pezar de que corre bien  PyCharm te lanza el siguiente error: No module name nombredelmodulo es porque no está tomando el directorio actual como "source directory".



Para solventarlo solo basta hacer dar botón secundario al directorio y luego en Mark Directory as -> "Sources Root"


listo


lunes, 24 de junio de 2013

Bluetooth + Linux + Qt + C/C++

En este tuto veremos como comunicar un programa escrito en C/C++ - Qt con un arduino usando un módulo bluetooth.

Este post es idéntico al anterior, con la variación que en vez de mandar o recibir datos desde moserial lo haremos con un programa nuestro. Nuestro programa apagará y encenderá un led conectado al arduino y mostrará la respuesta enviada.

Paso 1: Instala las bibliotecas de desarrollo de python para c/c++

#yum install python-*

#yum install bluez*

Paso 2: Realiza todos los pasos de este post y verifica que funcione.

Paso 3: Cuando todo funcione entonces procedemos a abrir Qt Creator y creamos nuestro Qt Gui Application. En mi caso lo llame BluetoothRapido

Paso 4: Editamos el fichero .pro para que reconozca las bibliotecas python. para ello agregamos el siguiente string al final del fichero:

INCLUDEPATH += /usr/include/python2.7/
LIBS += -lpython2.7 -lbluetooth -lpthread




Nota que este ejemplo es para python 2.7. Debes verificar que versión de python tienes instalado en tu máquina. Si es distinto al 2.7 por ejemplo 2.5 entonces debes sustituir la versión en el string. Quedaría así:


INCLUDEPATH += /usr/include/python2.5/
LIBS += -lpython2.5 -lbluetooth -lpthread


Ya estás listo pasa usar la clase BluetoothManager que simplifica mucho el trabajo. Consta de dos métodos principales para enviar datos, sincrona y asincronamente, (Probado con Qt5 - c++x11):


class BluetoothManager{
 public:
 void init(){
 isOpen=true;
 Py_Initialize(); 
 main_module = PyImport_ImportModule("__main__");
 main_dict = PyModule_GetDict(main_module);
 PyRun_SimpleString(pycode_Init);
 } 
 // Envia un string sin esperar respuesta
 void sendAsync(QString data){
 if (!isOpen){
 perror("Error: puerto cerrado");
 return;
 }
 if (!data.size()){
 return;
 }
 // Concatena el string a enviar con el comando
 PyRun_SimpleString(QString(QString("sock.send(\"")+data+"\\n\");\n").toLatin1().constData()); 
 } 
 // Envia un string y espera la respuesta
 QString sendSync(QString data){
 if (!isOpen){
 perror("Error: puerto cerrado");
 return QString("");
 }
 if (!data.size()){
 return QString("");
 }
 
 // Concatena el string a enviar con el comando
 PyObject *data_py = NULL;
 PyRun_SimpleString(QString(QString("sock.send(\"")+data+"\\n\");\n").toLatin1().constData());
 usleep(150000);
 PyRun_SimpleString("print(\"Recibe Data: \");\n");
 PyRun_SimpleString("data = sock.recv(1024);\n");
 PyRun_SimpleString("print \"received: \", data;\n");
 data_py = PyMapping_GetItemString(main_dict, (char*)"data");
 return QString(PyString_AsString(data_py));
 }
 
 void close(){
 if (isOpen){
 PyRun_SimpleString("sock.close();");
 Py_Finalize();
 isOpen=false;
 }
 }
 
 ~BluetoothManager(){
 close();
 }
 private:
 bool isOpen;
 // Código para inicializar
 const char * pycode_Init=
 "from bluetooth import *;\n"
 "server_address = \"00:13:01:05:06:73\";\n" // Mac de mi modulo
 "port = 1;\n"
 "sock = BluetoothSocket( RFCOMM );\n"
 "sock.connect((server_address, port));\n"
 "sock.settimeout(100.0);\n";
 int t=0;
 PyObject *main_module, *main_dict;
 };


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

00:13:01:05:06:73 es la MAC de mi módulo bluetooth (hc-05). Debe sustituirla por su MAC.

Por ejemplo Ejemplo, para mandar un string asincronamente al bluetooth:

BluetoothManager bt;
bt.sendAsync("UN_STRING");