current position:Home>Pyinstaller package Python project
Pyinstaller package Python project
2022-01-29 22:56:03 【Notes of the lost schoolboy】
Little knowledge , Great challenge ! This article is participating in “ A programmer must have a little knowledge ” Creative activities .
Hardware and software environment
- Windows 10 64bit
- PyQt5
- Anaconda with python 3.6.5
- pyinstaller
- apscheduler
- sqlalchemy
Preface
above PyQt5 Series of tutorials ( Four ) use py2exe Package the program How to use py2exe
Here it is python3
Project packaging , This article introduces another packaging tool pyinstaller
, Personal feeling is better than py2exe
It's simpler 、 convenient , But also cross platform .
pyinstaller install
Execute... On the command line
pip install pyinstaller
Copy code
pack exe
Take the previous example , Unzip into the project directory , The command line executes the packaging command
pyinstaller -F --distpath release main.py
Copy code
among release
It's the destination folder ,main.py
It is the project entry file ,-F
Means to generate an executable file .
pyinstaller
There are many packaging parameters , If necessary, through help
Check it out.
pyinstaller -h
Copy code
subprocess Packing problem
Include in package subprocess.Popen
They found , Add parameters --noconsole
When the exe
When the file is running , The process is not running correctly . For example, we need to use subprocess.Popen
Create a process to perform a command line operation ,
mProcess = subprocess.Popen(cmd,stdin=subprocess.DEVNULL, stdout=subprocess.PIPE, stderr=subprocess.STDOUT,universal_newlines=True)
Copy code
pyinstaller
The packaging operation command is as follows
pyinstaller -F --noconsole --clean --distpath release main.py
Copy code
It is generated after packing exe
, Can run , However, the viewing process did not work correctly as expected .
The solution is to create the process , add startupinfo
Parameters , as follows
si = subprocess.STARTUPINFO()
si.dwFlags |= subprocess.STARTF_USESHOWWINDOW
mProcess = subprocess.Popen(cmd,stdin=subprocess.DEVNULL, stdout=subprocess.PIPE, stderr=subprocess.STDOUT,universal_newlines=True,startupinfo=si)
Copy code
Problem solving , For details, please refer to the information at the end of the text
apscheduler Packing problem
The project uses apscheduler
This library , It's very good for timed tasks , It's also easy to use , But in the pyinstaller
When packing , The following error occurred
The solution is , Edit the file /usr/local/lib/python3.5/dist-packages/apscheduler/__init__.py
# These will be removed in APScheduler 4.0.
# release = __import__('pkg_resources').get_distribution('APScheduler').version.split('-')[0]
# version_info = tuple(int(x) if x.isdigit() else x for x in release.split('.'))
# version = __version__ = '.'.join(str(x) for x in version_info[:3])
release = (3,3,1)
version_info = '3.3.1'
version = '3.3.1'
Copy code
3.3.1
I installed it apscheduler
Version number of , Modify according to the actual situation .
Next, create a file named hook-ctypes.macholib.py
, The contents are as follows
# -*- coding: utf-8 -*-
from PyInstaller.utils.hooks import copy_metadata
datas = copy_metadata('apscheduler')
Copy code
Finally, execute the packing command
pyinstaller -F --clean --additional-hooks-dir hooks --distpath release main.py
Copy code
sqlalchemy Packing problem
In use pyinstaller
Pack one and use sqlalchemy
Library python3
In Engineering , Encountered the problem that the packaged executable file reported an error , As shown in the figure below
The solution is , take sqlalchemy.dialects
Medium mysql
introduce , Then use mysql+pymysql
To open the database , The code is as follows
import pymysql
from sqlalchemy import create_engine
from sqlalchemy.orm import sessionmaker
from sqlalchemy.dialects import mysql
username = 'xugaoxiang'
passwd = '123456'
server = '192.168.0.100'
port = '3306'
dbname = 'djdb'
cmd_connect = 'mysql+pymysql://{}:{}@{}:{}/{}'.format(username, passwd, server, port, dbname)
engine = create_engine(cmd_connect)
Copy code
perform pyinstaller
Packing command
pyinstaller -F --clean --distpath shark main.py
Copy code
remarks
In order to keep records , stay Github
Created a project , The address is : github.com/xugaoxiang/…, All the code will be later 、 Documents and blog links are on it .
Reference material
copyright notice
author[Notes of the lost schoolboy],Please bring the original link to reprint, thank you.
https://en.pythonmana.com/2022/01/202201292255596547.html
The sidebar is recommended
- Install tensorflow and python 3.6 in Windows 7
- Python collects and monitors system data -- psutil
- Getting started with Python - object oriented - special methods
- Teach you how to use Python to transform an alien invasion game
- You can easily get started with Excel. Python data analysis package pandas (VI): sorting
- Implementation of top-level design pattern in Python
- Using linear systems in python with scipy.linalg
- How to get started quickly? How to learn Python
- Modifying Python environment with Mac OS security
- Better use atom to support jupyter based Python development
guess what you like
-
Better use atom to support jupyter based Python development
-
Fast power modulus Python implementation of large numbers
-
Python architects recommend the book "Python programmer's Guide" which must be read by self-study Python architects. You are welcome to take it away
-
Decoding the verification code of Taobao slider with Python + selenium, the road of information security
-
Python game development, pyGame module, python implementation of skiing games
-
Python collects and monitors system data -- psutil
-
Python + selenium automated test: page object mode
-
You can easily get started with Excel. Python data analysis package pandas (IV): any grouping score bar
-
Opencv skills | saving pictures in common formats as transparent background pictures (with Python source code) - teach you to easily make logo
-
Python ThreadPoolExecutor restrictions_ work_ Queue size
Random recommended
- Python generates and deploys verification codes with one click (Django)
- With "Python" advanced, you can catch all the advanced syntax! Advanced function + file operation, do not look at regret Series ~
- At the beginning of "Python", you must see the series. 10000 words are only for you. It is recommended to like the collection ~
- [Python kaggle] pandas basic exercises in machine learning series (6)
- Using linear systems in python with scipy.linalg
- The founder of pandas teaches you how to use Python for data analysis (mind mapping)
- Using Python to realize national second-hand housing data capture + map display
- Python image processing, automatic generation of GIF dynamic pictures
- Pandas advanced tutorial: time processing
- How to make Python run faster? Six tips!
- Django: use of elastic search search system
- Python 3.10 official release
- Python chat room (Tkinter writing interface, streaming, socket to realize private chat, group chat, check chat records, Mysql to store data)
- This pandas exercise must be successfully won
- [algorithm learning] sword finger offer 64 Find 1 + 2 +... + n (Java / C / C + + / Python / go / trust)
- leetcode 58. Length of Last Word(python)
- Problems encountered in writing the HTML content of articles into the database during the development of Django blog
- Understand Python's built-in function and add a print function yourself
- Python implements JS encryption algorithm in thousands of music websites
- leetcode 35. Search Insert Position(python)
- leetcode 1829. Maximum XOR for Each Query(python)
- [introduction to Python visualization]: 12 small examples of complete data visualization, taking you to play with visualization ~
- Learning this Python library can reduce at least 100 lines of code
- leetcode 67. Add Binary(python)
- Regular re parameter replacement of Python 3 interface automation test framework
- V. pandas based on Python
- Only 15 lines of code is needed for face detection! (using Python and openCV)
- [Python crawler Sao operation] you can crawl Sirius cinema movies without paying
- leetcode 69. Sqrt(x)(python)
- Teach you to read the source code of Cpython (I)
- Snowball learning started in the fourth quarter of Python. One needs three meals. I have a new understanding of Python functional programming, process-oriented, object-oriented and functional
- leetcode 88. Merge Sorted Array(python)
- Don't you know more about a python library before the end of 2021?
- Python crawler web page parsing artifact XPath quick start teaching!!!
- Use Python and OpenCV to watermark the image
- String and related methods of Python data type introduction
- Heapq module of Python module
- Introduction to beautiful soup of Python crawler weapon, detailed explanation, actual combat summary!!!
- Event loop of Python collaboration series
- Django docking pin login system