Chrome 66.0.3359.139

{
    "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8",
    "Accept-Encoding": "gzip, deflate",
    "Accept-Language": "ko-KR",
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.139 Safari/537.36"
}

InternetExplorer 11

{
    "Accept": "text/html, application/xhtml+xml, image/jxr, */*",
    "Accept-Encoding": "gzip, deflate",
    "Accept-Language": "ko-KR",
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64; Trident/7.0; rv:11.0) like Gecko"
}

'개발' 카테고리의 다른 글

MongoDB setup on Ubuntu  (0) 2017.09.10
GIT 초기 최적화  (0) 2017.02.15
구글번역 사용시 코드영역 제외하고 번역하기  (1) 2017.02.12
[html] post 방식을 링크 시키는 방법  (3) 2017.01.25
자주 쓰이는 mail header  (0) 2017.01.15

[html] post 방식을 링크 시키는 방법

1. HTML의 form 이용

<form name="myForm" action="http://httpbin.org/post" method="POST">
<input type="hidden" name="some_key1" value="some_value1" />
<input type="hidden" name="some_key2" value="some_value2" />
</form>

<a href="#" onclick="javascript:document.myForm.submit();">click</a>

click




2. JavaScript 함수 이용

<script>
    function page_move(url, some_data) {
        var form = document.createElement("form");
        var parm = new Array();
        var input = new Array();

        form.action = url;
        form.method = "post";


        parm.push( ['some_key1', 'some_value1'] );
        parm.push( ['some_key2', 'some_value2'] );
        parm.push( ['some_data', some_data] );


        for (var i = 0; i < parm.length; i++) {
            input[i] = document.createElement("input");
            input[i].setAttribute("type", "hidden");
            input[i].setAttribute('name', parm[i][0]);
            input[i].setAttribute("value", parm[i][1]);
            form.appendChild(input[i]);
        }
        document.body.appendChild(form);
        form.submit();
    }
</script>

<a href="#" onclick="javascript:page_move('http://httpbin.org/post', 'foobar');">click</a>

click


'개발' 카테고리의 다른 글

MongoDB setup on Ubuntu  (0) 2017.09.10
GIT 초기 최적화  (0) 2017.02.15
구글번역 사용시 코드영역 제외하고 번역하기  (1) 2017.02.12
브라우저 header  (0) 2017.02.09
자주 쓰이는 mail header  (0) 2017.01.15

[PyQt5, pyinstaller] Failed to execute script pyi_rth_qt5plugins

PyQt로 만들어진 프로그램을 윈도우에서 pyinstaller로 컴파일을 했으나
만들어진 프로그램은 실행되지 않고 바로 종료 되었다.

콘솔모드로 컴파일후 콘솔로 실행했더니 아래와 같은 trace back을 얻을수 있었다.

Traceback (most recent call last):
  File "site-packages\pyinstaller-3.2.1+5b84a8d-py3.5.egg\PyInstaller\loader\rthooks\pyi_rth_qt5plugins.py", line 46, in <module>
  File "C:\Python35\lib\site-packages\pyinstaller-3.2.1+5b84a8d-py3.5.egg\PyInstaller\loader\pyimod03_importers.py", line 573, in load_module
    module = loader.load_module(fullname)
ImportError: DLL load failed: 지정된 모듈을 찾을 수 없습니다.
Failed to execute script pyi_rth_qt5plugins


구글링으로 두가지 해결방법을 찾을수 있었다.




pyinstaller develop 버전 설치

  1. github에서 develop branch를 내려받는다.

    https://github.com/pyinstaller/pyinstaller/archive/develop.zip

  2. 기존의 pyinstaller를 제거하고 내려받은 pyinstaller를 설치한다.

    py -3 -m pip uninstall pyinstaller
    cd pyinstaller-develop
    py -3 setup.py install
    

그런데 어째선지 나의 경우에는 설치가 되지 않았다. 아마 개발자가 업데이트 도중 아직 release를 하지 못한 모양이다..
어쩔 수 없이 다른 방법을 찾을수 밖에 없었다.




.spec파일 직접 작성

.spec 파일의 pathex 항목에 PyQt5의 bin디렉토리 경로를 추가해준다.

나의 경우에는 python3이 C:\Python35에 설치돼 있으므로,
PyQt5의 bin 디렉토리 위치는 C:\Python35\Lib\site-packages\PyQt5\Qt\bin 이 된다.

  1. setup.spec 파일을 만들어 각자 상황에 맞게 작성한다.

    # -*- mode: python -*-
    
    block_cipher = None
    app_path = 'my_app.pyw'
    app_name = 'my_app'
    
    a = Analysis([app_path],
                 pathex=[r'C:\Python35\Lib\site-packages\PyQt5\Qt\bin'],
                 binaries=[],
                 datas=[],
                 hiddenimports=[],
                 hookspath=[],
                 runtime_hooks=[],
                 excludes=[],
                 win_no_prefer_redirects=False,
                 win_private_assemblies=False,
                 cipher=block_cipher)
    pyz = PYZ(a.pure, a.zipped_data,
                 cipher=block_cipher)
    exe = EXE(pyz,
              a.scripts,
              exclude_binaries=True,
              name=app_name,
              debug=False,
              strip=False,
              upx=True,
              console=False , icon='' )
    coll = COLLECT(exe,
                   a.binaries,
                   a.zipfiles,
                   a.datas,
                   strip=False,
                   upx=True,
                   name=app_name)
    
  2. spec파일로 컴파일한다

     pyinstaller setup.spec
    

    성공!





참조: https://github.com/pyinstaller/pyinstaller/issues/2152

'Python > PyQt5' 카테고리의 다른 글

[PyQt5] Drag&drop 으로 파일 경로 얻어오기  (2) 2017.01.13

메모장




이민철

2_minchul@naver.com

자주 쓰이는 mail header

  • To : 받는사람 필수사항

    여러명한테 보낼땐 세미콜론으로 구분한다.

  • From : 보낸사람

    이메일을 적어도 되고 nickname을 적어도 된다.
    보통 nickname을 적는다.
    ex: 이민철, drminchul@naver.com

  • Subject : 제목

  • Cc : 참조

    여러명한테 보낼땐 세미콜론으로 구분한다.

  • Bcc : 숨은참조

    여러명한테 보낼땐 세미콜론으로 구분한다.

'개발' 카테고리의 다른 글

MongoDB setup on Ubuntu  (0) 2017.09.10
GIT 초기 최적화  (0) 2017.02.15
구글번역 사용시 코드영역 제외하고 번역하기  (1) 2017.02.12
브라우저 header  (0) 2017.02.09
[html] post 방식을 링크 시키는 방법  (3) 2017.01.25

https://github.com/2minchul/PyQt5-Examples/blob/master/%5BPyQt5%5D%20get%20filepath%20by%20Drag%26Drop/app.py

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
#!/usr/bin/python3
#-*- coding: utf-8 -*-
 
import sys
from PyQt5 import QtWidgets, QtGui, QtCore
 
class MainWidget(QtWidgets.QMainWindow):
    def __init__(self, parent=None):
        super(MainWidget, self).__init__(parent)
        self.setWindowTitle("title")
        self.resize(720,480)
        self.setAcceptDrops(True)
 
    def dragEnterEvent(self, event):
        if event.mimeData().hasUrls():
            event.accept()
        else:
            event.ignore()
 
    def dropEvent(self, event):
        files = [u.toLocalFile() for u in event.mimeData().urls()]
        for f in files:
            print(f)
 
if __name__ == '__main__':
    app = QtWidgets.QApplication(sys.argv)
    MainWindow = MainWidget()
    MainWindow.show()
    sys.exit(app.exec_())
cs


+ Recent posts