Thread: pgadmin4 and Python3

pgadmin4 and Python3

From
Dmitry Voronin
Date:
Hello, Dave and pgadmin team.

Two questions.

Will any versions of pgadmin3 be released in the future?

I want run padmin4 as desktop application. So, I compled runtime part and run it. Pgadmin4 tell me to enter Python Bin
pathand application path. I entered it, but it is not helpful for me.
 
I sucessfully run pgadmin4 as web applicaion by confiugre and install requirements for Python3.
Can you tell me how run pgadmin4 as desktop application more in details please?

-- 
Best regards, Dmitry Voronin



Re: pgadmin4 and Python3

From
Dave Page
Date:
Hi

On Sat, Jun 11, 2016 at 6:10 PM, Dmitry Voronin
<carriingfate92@yandex.ru> wrote:
> Hello, Dave and pgadmin team.
>
> Two questions.
>
> Will any versions of pgadmin3 be released in the future?

Extremely unlikely.

> I want run padmin4 as desktop application. So, I compled runtime part and run it. Pgadmin4 tell me to enter Python
Binpath and application path. I entered it, but it is not helpful for me.
 
> I sucessfully run pgadmin4 as web applicaion by confiugre and install requirements for Python3.
> Can you tell me how run pgadmin4 as desktop application more in details please?

The runtime will search for pgAdmin4.py in various places that it
expects it might find it (for example, where it would be in a Mac
Appbundle, a Windows installation or a development tree). If you have
it somewhere else, you can enter the directory containing pgAdmin4.py
in the configuration (don't include the filename, just the directory
path). This is done in Server::Init() in Server.cpp of the runtime if
you want to look at the logic.

The runtime will also do a search (albeit much smaller) for a Python
virtual environment containing the Python dependencies for the app. If
needed, you can set this to the site-packages directory within the
virtual environment which will allow the runtime to find all the
dependencies; for example, on my machine that would be
/Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/site-packages/. This
is handled in Server::Server(quint16 port) in Server.cpp of the
runtime.


-- 
Dave Page
Blog: http://pgsnake.blogspot.com
Twitter: @pgsnake

EnterpriseDB UK: http://www.enterprisedb.com
The Enterprise PostgreSQL Company



Re: pgadmin4 and Python3

From
Дмитрий Воронин
Date:
11.06.2016, 20:24, "Dave Page" <dpage@pgadmin.org>:

>
>>  I want run padmin4 as desktop application. So, I compled runtime part and run it. Pgadmin4 tell me to enter Python
Binpath and application path. I entered it, but it is not helpful for me.
 
>>  I sucessfully run pgadmin4 as web applicaion by confiugre and install requirements for Python3.
>>  Can you tell me how run pgadmin4 as desktop application more in details please?
>
> The runtime will search for pgAdmin4.py in various places that it
> expects it might find it (for example, where it would be in a Mac
> Appbundle, a Windows installation or a development tree). If you have
> it somewhere else, you can enter the directory containing pgAdmin4.py
> in the configuration (don't include the filename, just the directory
> path). This is done in Server::Init() in Server.cpp of the runtime if
> you want to look at the logic.
>
> The runtime will also do a search (albeit much smaller) for a Python
> virtual environment containing the Python dependencies for the app. If
> needed, you can set this to the site-packages directory within the
> virtual environment which will allow the runtime to find all the
> dependencies; for example, on my machine that would be
> /Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/site-packages/. This
> is handled in Server::Server(quint16 port) in Server.cpp of the
> runtime.
>

Ok, I try running pgadmin4 application on Ubuntu 15.10. I extract sources of padmin4 to /home/developer/pgadmin4. 
Next, I create python virtual environment located at /home/developer/pgadmin4/venv and set all requirements from
requirements_py3.txt.
Try to run application as web:

/home/developer/pgadmin4/venv/bin/python3.4 /home/developer/pgadmin4/web/pgAdmin4.py

It's works fine.

Next, I build runtime part with Qt5, set Python path as

/home/developer/pgadmin4/venv/bin/python3.4;/home/developer/pgadmin4/venv/lib/python3.4/site-packages

and application path as

/home/developer/pgadmin4/web/

But it's not work: Failed to launch the application server, server thread exiting.

What I am doing wrong?

-- 
Best regards, Dmitry Voronin



Re: pgadmin4 and Python3

From
Neel Patel
Date:
Hi,

As you said, PYTHONPATH is set but from the error it looks like application is not able to get the python path.
Can you please export the PYTHONPATH variable to "/home/developer/pgadmin4/venv/lib/python3.4/site-packages" and run the application from where the path is exported.

e.g.
export PYTHONPATH=/home/developer/pgadmin4/venv/lib/python3.4/site-packages

Let us know the output.

Thanks,
Neel Patel


On Tue, Jun 14, 2016 at 11:56 AM, Дмитрий Воронин <carriingfate92@yandex.ru> wrote:
11.06.2016, 20:24, "Dave Page" <dpage@pgadmin.org>:

>
>>  I want run padmin4 as desktop application. So, I compled runtime part and run it. Pgadmin4 tell me to enter Python Bin path and application path. I entered it, but it is not helpful for me.
>>  I sucessfully run pgadmin4 as web applicaion by confiugre and install requirements for Python3.
>>  Can you tell me how run pgadmin4 as desktop application more in details please?
>
> The runtime will search for pgAdmin4.py in various places that it
> expects it might find it (for example, where it would be in a Mac
> Appbundle, a Windows installation or a development tree). If you have
> it somewhere else, you can enter the directory containing pgAdmin4.py
> in the configuration (don't include the filename, just the directory
> path). This is done in Server::Init() in Server.cpp of the runtime if
> you want to look at the logic.
>
> The runtime will also do a search (albeit much smaller) for a Python
> virtual environment containing the Python dependencies for the app. If
> needed, you can set this to the site-packages directory within the
> virtual environment which will allow the runtime to find all the
> dependencies; for example, on my machine that would be
> /Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/site-packages/. This
> is handled in Server::Server(quint16 port) in Server.cpp of the
> runtime.
>

Ok, I try running pgadmin4 application on Ubuntu 15.10. I extract sources of padmin4 to /home/developer/pgadmin4.
Next, I create python virtual environment located at /home/developer/pgadmin4/venv and set all requirements from requirements_py3.txt.
Try to run application as web:

/home/developer/pgadmin4/venv/bin/python3.4 /home/developer/pgadmin4/web/pgAdmin4.py

It's works fine.

Next, I build runtime part with Qt5, set Python path as

/home/developer/pgadmin4/venv/bin/python3.4;/home/developer/pgadmin4/venv/lib/python3.4/site-packages

and application path as

/home/developer/pgadmin4/web/

But it's not work: Failed to launch the application server, server thread exiting.

What I am doing wrong?

-- 
Best regards, Dmitry Voronin


--
Sent via pgadmin-support mailing list (pgadmin-support@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgadmin-support

Re: pgadmin4 and Python3

From
Дмитрий Воронин
Date:
<div> </div><div> </div><div>14.06.2016, 09:37, "Neel Patel" <neel.patel@enterprisedb.com>:</div><blockquote
type="cite"><div>Hi,<div> </div><div>Asyou said, PYTHONPATH is set but from the error it looks like application is not
ableto get the python path.</div><div>Can you please export the PYTHONPATH variable to "<span
style="font-size:12.8px;">/home/developer/</span><span
style="font-size:12.8px;">pgadmin4/venv/lib/python3.4/</span><spanstyle="font-size:12.8px;">site-packages</span>" and
runthe application from where the path is exported.</div><div> </div><div>e.g.</div><div>export PYTHONPATH=<span
style="font-size:12.8px;">/home/developer/</span><span
style="font-size:12.8px;">pgadmin4/venv/lib/python3.4/</span><span
style="font-size:12.8px;">site-packages</span></div><div><spanstyle="font-size:12.8px;"> </span></div><div><span
style="font-size:12.8px;">Letus know the output.</span></div><div> </div><div>Thanks,</div><div>Neel
Patel</div><div> </div></div></blockquote><div> </div><div>Thankyou for answer. It's works. But why pgadmin4 does not
setPYTHONPATH after dialog?</div><div> </div><div>But when I run pgadmin4 as desktop I see Python Exception Trace. (I
usePython 3.4):</div><div> </div><div>Traceback (most recent call last):<br />  File
"/home/developer/pgadmin4/web/pgAdmin4.py",line 24, in <module><br />    from pgadmin import create_app<br /> 
File"/home/developer/pgadmin4/web/pgadmin/__init__.py", line 13, in <module><br />    from flask import Flask,
abort,request, current_app<br />  File "/home/developer/pgadmin4/venv/lib/python3.4/site-packages/flask/__init__.py",
line17, in <module><br />    from werkzeug.exceptions import abort<br />  File
"/home/developer/pgadmin4/venv/lib/python3.4/site-packages/werkzeug/__init__.py",line 154, in <module><br />   
__import__('werkzeug.exceptions')<br/>  File
"/home/developer/pgadmin4/venv/lib/python3.4/site-packages/werkzeug/exceptions.py",line 71, in <module><br />   
fromwerkzeug.wrappers import Response<br />  File
"/home/developer/pgadmin4/venv/lib/python3.4/site-packages/werkzeug/wrappers.py",line 26, in <module><br />   
fromwerkzeug.http import HTTP_STATUS_CODES, \<br />  File
"/home/developer/pgadmin4/venv/lib/python3.4/site-packages/werkzeug/http.py",line 26, in <module><br />    from
urllib2import parse_http_list as _parse_list_header<br />  File "<frozen importlib._bootstrap>", line 2237, in
_find_and_load<br/>  File "<frozen importlib._bootstrap>", line 2222, in _find_and_load_unlocked<br />  File
"<frozenimportlib._bootstrap>", line 2164, in _find_spec<br />  File "<frozen importlib._bootstrap>", line
1940,in find_spec<br />  File "<frozen importlib._bootstrap>", line 1914, in _get_spec<br />  File "<frozen
importlib._bootstrap>",line 2049, in find_spec<br />  File "<frozen importlib._bootstrap>", line 53, in
_path_join<br/>  File "<frozen importlib._bootstrap>", line 53, in <listcomp><br />TypeError: 'str' does
notsupport the buffer interface<br />"Failed to launch the application server, server thread exiting."</div><div><br
/>Allpackages were installed from requirements_py3.txt via pip3.4 install -r requirements_py3.txt. After depends
installingI  copy web/config.py to web/config_local.py and run /home/developer/pgadmin4/venv/bin/python3.4 web/setup.py
forinitialization</div><div> </div><div>-- </div><div>Best regards, Dmitry Voronin</div><div> </div><div>Traceback
(mostrecent call last):<br />  File "/home/developer/pgadmin4-1.0-beta1/web/pgAdmin4.py", line 24, in <module><br
/>   from pgadmin import create_app<br />  File "/home/developer/pgadmin4-1.0-beta1/web/pgadmin/__init__.py", line 13,
in<module><br />    from flask import Flask, abort, request, current_app<br />  File
"/home/developer/pgadmin4-1.0-beta1/venv/lib/python3.4/site-packages/flask/__init__.py",line 17, in <module><br
/>   from werkzeug.exceptions import abort<br />  File
"/home/developer/pgadmin4-1.0-beta1/venv/lib/python3.4/site-packages/werkzeug/__init__.py",line 154, in
<module><br/>    __import__('werkzeug.exceptions')<br />  File
"/home/developer/pgadmin4-1.0-beta1/venv/lib/python3.4/site-packages/werkzeug/exceptions.py",line 71, in
<module><br/>    from werkzeug.wrappers import Response<br />  File
"/home/developer/pgadmin4-1.0-beta1/venv/lib/python3.4/site-packages/werkzeug/wrappers.py",line 26, in
<module><br/>    from werkzeug.http import HTTP_STATUS_CODES, \<br />  File
"/home/developer/pgadmin4-1.0-beta1/venv/lib/python3.4/site-packages/werkzeug/http.py",line 26, in <module><br
/>   from urllib2 import parse_http_list as _parse_list_header<br />  File "<frozen importlib._bootstrap>", line
2237,in _find_and_load<br />  File "<frozen importlib._bootstrap>", line 2222, in _find_and_load_unlocked<br /> 
File"<frozen importlib._bootstrap>", line 2164, in _find_spec<br />  File "<frozen importlib._bootstrap>",
line1940, in find_spec<br />  File "<frozen importlib._bootstrap>", line 1914, in _get_spec<br />  File
"<frozenimportlib._bootstrap>", line 2049, in find_spec<br />  File "<frozen importlib._bootstrap>", line
53,in _path_join<br />  File "<frozen importlib._bootstrap>", line 53, in <listcomp><br />TypeError: 'str'
doesnot support the buffer interface<br />"Failed to launch the application server, server thread exiting."<br /><br
/></div>

Re: pgadmin4 and Python3

From
Dave Page
Date:
Hi

On Tue, Jun 14, 2016 at 7:47 AM, Дмитрий Воронин
<carriingfate92@yandex.ru> wrote:
>
>
> 14.06.2016, 09:37, "Neel Patel" <neel.patel@enterprisedb.com>:
>
> Hi,
>
> As you said, PYTHONPATH is set but from the error it looks like application
> is not able to get the python path.
> Can you please export the PYTHONPATH variable to
> "/home/developer/pgadmin4/venv/lib/python3.4/site-packages" and run the
> application from where the path is exported.
>
> e.g.
> export PYTHONPATH=/home/developer/pgadmin4/venv/lib/python3.4/site-packages
>
> Let us know the output.
>
> Thanks,
> Neel Patel
>
>
>
> Thank you for answer. It's works. But why pgadmin4 does not set PYTHONPATH
> after dialog?

Laziness on my part mostly. It would require a fairly significant
amount of refactoring to restart everything after the dialog is shown,
and at the moment we just exit and let the user restart after setting
the path.

You most definitely shouldn't have to set PYTHONPATH in the environment though.

> But when I run pgadmin4 as desktop I see Python Exception Trace. (I use
> Python 3.4):
>
> Traceback (most recent call last):
>   File "/home/developer/pgadmin4/web/pgAdmin4.py", line 24, in <module>
>     from pgadmin import create_app
>   File "/home/developer/pgadmin4/web/pgadmin/__init__.py", line 13, in
> <module>
>     from flask import Flask, abort, request, current_app
>   File
> "/home/developer/pgadmin4/venv/lib/python3.4/site-packages/flask/__init__.py",
> line 17, in <module>
>     from werkzeug.exceptions import abort
>   File
> "/home/developer/pgadmin4/venv/lib/python3.4/site-packages/werkzeug/__init__.py",
> line 154, in <module>
>     __import__('werkzeug.exceptions')
>   File
> "/home/developer/pgadmin4/venv/lib/python3.4/site-packages/werkzeug/exceptions.py",
> line 71, in <module>
>     from werkzeug.wrappers import Response
>   File
> "/home/developer/pgadmin4/venv/lib/python3.4/site-packages/werkzeug/wrappers.py",
> line 26, in <module>
>     from werkzeug.http import HTTP_STATUS_CODES, \
>   File
> "/home/developer/pgadmin4/venv/lib/python3.4/site-packages/werkzeug/http.py",
> line 26, in <module>
>     from urllib2 import parse_http_list as _parse_list_header
>   File "<frozen importlib._bootstrap>", line 2237, in _find_and_load
>   File "<frozen importlib._bootstrap>", line 2222, in
> _find_and_load_unlocked
>   File "<frozen importlib._bootstrap>", line 2164, in _find_spec
>   File "<frozen importlib._bootstrap>", line 1940, in find_spec
>   File "<frozen importlib._bootstrap>", line 1914, in _get_spec
>   File "<frozen importlib._bootstrap>", line 2049, in find_spec
>   File "<frozen importlib._bootstrap>", line 53, in _path_join
>   File "<frozen importlib._bootstrap>", line 53, in <listcomp>
> TypeError: 'str' does not support the buffer interface
> "Failed to launch the application server, server thread exiting."

A fix for that issue is in testing - see
https://www.postgresql.org/message-id/CACbbB7hdN=04qpMt1MKiz2ZEM4UXzniphQN76X=5A2i3bemHLw@mail.gmail.com


--
Dave Page
Blog: http://pgsnake.blogspot.com
Twitter: @pgsnake

EnterpriseDB UK: http://www.enterprisedb.com
The Enterprise PostgreSQL Company