pyinstaller onefile exe and external configuration files - python

I created a python software, it uses configuration files in external folder.
I give an example of the folder's structure
--Src
--Src/main.py
--reader
--reader/conf.ini
when I run the comand pyinstaller --onefile main.py the final executable file main.exe connot read from the configuration file reader/conf.ini, but if I run the comand pyinstaller main.py the executable file main.exe is able to read from conf.ini.
ho can I use both external configuration file and the option --onefile?

Since files are read at runtime instead of compile-time, the config file would need to exist when the executable is ran. If you don't want this, you can hard-code these values as constants into your program, however, the configuration wouldn't be able to be modified unless you re-compile the source code.

Related

I want to compile my python project and i don't know how to do that

I want to compile all this into a python exe
folder and file png
Can you guys give me the full command on how can i compile it
run the main file from the terminal, all files are probably linked through it.
to run the file go to the directory where all of your files are present and type: python main.py

How to convert Python package to exe?

Our Programs is not always a Python source file !.
The Python may be associated with a file or an image,
that is located inside the source of the application to the file path inside the package.
For example, when setting the application icon in Tkinter Or Include image for app background
root.iconbitmap('favicon.ico')
PhotoImage(file = 'python_logo.gif')
In Pyinstaller only the source file expires in the exe format.
If the program contains a file or image path inside the source, then the program will not be executed , In that event,The source of the application and files are in a package (on a route).
Please provide a solution to this problem, So as possible convert a package containing source and file into exe
1-Install cx_Freeze, (open your command prompt and type pip install cx_Freeze
2-Install idna, (open your command prompt and type pip install idna.
3-Write a .py program named myprogram.py
4-Create a new python file named setup.py on the current directory of your script.
5-In the setup.py, code below and save it.
6-With shift pressed right click on the same directory, so you are able to open a command prompt window.
7-In the prompt, type python setup.py build
8-If your script is error free, then there will be no problem on creating application.
9-Check the newly created folder build. It has another folder in it. Within that folder you can find your application. Run it. Make yourself happy.
this works on python 3.5 and above!
Add heres the open source project to convert to exe
https://github.com/brentvollebregt/auto-py-to-exe
I have not used Pyinstaller myself but in cx_Freeze I know you can include none project files like images in the setup file. With Pyinstaller you want to look into the spec file. Here is a link to the docs where it talks about added files to project. https://pythonhosted.org/PyInstaller/spec-files.html#adding-files-to-the-bundle I hope thisis of some help.

How to compile a .py file which has a .kv file and other resource files

I have written an application in python and Kivy and it has a main.py and main.kv file and also other resource files like image and text file. When i compile them with PyInstaller.exe on windows 7 i dont know what goes on in the background. The .exe file crashes with different errors each time i compile.
So i wanted someone to shed some light on how i will get all the files in my main.py i.e image & text files compiled.
The command which i tried in commandline is:
PyInstaller.exe --onefile --icon=myicon.png main.py
After you ran Pyinstaller for the first time, it should have created a main.spec file. You can edit the main.spec file to add any additional resources that your app requires (in addition to what Pyinstaller detects). Then you can run Pyinstaller with the simple command:
pyinstaller main.spec
Note that most of the options to Pyinstaller have no effect when you provide a spec file argument (all that info should be in the spec file). For more information see Pyinstaller docs.

How to make a Python script run without it opening the console window?

I want to double click on my Python script (which uses a Tkinter GUI) and I just want it to open the Tkinter window, not the console window.
To do this, I changed the extension from .py to .pyw and this seems to work fine on Windows but when I double click my .pyw file on a Linux machine, it doesn't work. It simply froze and I had to restart my system.
Please suggest a platform-independent solution that would help me to run the Python script without opening the terminal/command prompt.
it's been a while since i tried on linux, but i believe it should be fairly simple, firstly you need to put a shebang at the top of the script so your shell knows which executable to use:
#!/usr/bin/python
or if you want a specific version you can expand this to:
#!/usr/bin/python3.2
using whichever version you want (only works for first 2 digits)
then you need to mark it as executable:
chmod 711 myfile.py
for more info on this see this page
then when you double click it, on the rpi (last i used linux) it asks if you want to execute it, or execute it in the terminal.
if you choose to execute it without the terminal, you should only see the tkinter GUI
You can use pyinstaller to create the executables for the different platforms you want.
For example,
The syntax of the pyinstaller command is:
pyinstaller [options] script [script ...] | specfile
In the most simple case, set the current directory to the location of your program myscript.py and execute:
pyinstaller myscript.py
PyInstaller analyzes myscript.py and:
Writes myscript.spec in the same folder as the script.
Creates a folder build in the same folder as the script if it does not exist.
Writes some log files and working files in the build folder.
Creates a folder dist in the same folder as the script if it does not exist.
Writes the myscript executable folder in the dist folder.
In the dist folder you find the bundled app you distribute to your users.
Normally you name one script on the command line. If you name more, all are analyzed and included in the output. However, the first script named supplies the name for the spec file and for the executable folder or file. Its code is the first to execute at run-time.
For certain uses you may edit the contents of myscript.spec (described under Using Spec Files). After you do this, you name the spec file to PyInstaller instead of the script:
pyinstaller myscript.spec
You may give a path to the script or spec file, for example
pyinstaller options... ~/myproject/source/myscript.py
or, on Windows,
pyinstaller "C:\Documents and Settings\project\myscript.spec"
pyinstaller

Compiling Python into a windows application

Currently I am working on a fork of someone else's project, that is written in the Python programming language.
I have access to all the source code I need, with all the changes I wanted to make, and everything 'set' to how I need it.
My current step is trying to somehow compile it, so it runs as windows in a stand-alone application. I know this is possible because this is how the source-application runs. Currently I have access to Visual Studio with the python extension module, WinPython, the kivy framework itself that the GUI was built with, etc.
But I cannot seem to figure out how to do this. My cursory research has suggested a program called py2exe but that does not work with what I need, based on what I can tell.
copied from http://kivy.org/docs/guide/packaging-windows.html
Create the spec file
For this example, we’ll package the touchtracer example and embed a custom icon. The touchtracer example is the kivy\examples\demo\touchtracer directory and the main file is named main.py.
Double click on the Kivy.bat and a console will open.
Go to the pyinstaller 2.1 directory and create the initial spec:
cd pyinstaller-2.1
python pyinstaller.py --name touchtracer ..\kivy\examples\demo\touchtracer\main.py
You can also add an icon.ico file to the application folder in order to create an icon for the executable. If you don’t have a .ico file available, you can convert your icon.png file to ico using the web app ConvertICO. Save the icon.ico in the touchtracer directory and type:
python pyinstaller.py --name touchtracer --icon ..\kivy\examples\demo\touchtracer\icon.ico ..\kivy\examples\demo\touchtracer\main.py
For more options, please consult the PyInstaller 2 Manual.
The spec file will be touchtracer.spec located in inside the pyinstaller + touchtracer directory. Now we need to edit the spec file to add kivy hooks to correctly build the exe. Open the spec file with your favorite editor and add theses lines at the beginning of the spec:
from kivy.tools.packaging.pyinstaller_hooks import install_hooks
install_hooks(globals())
In the Analysis() function, remove the hookspath=None parameter. If you don’t do this, the kivy package hook will not be used at all.
Then you need to change the COLLECT() call to add the data for touchtracer (touchtracer.kv, particle.png, ...). Change the line to add a Tree() object. This Tree will search and add every file found in the touchtracer directory to your final package:
coll = COLLECT( exe, Tree('../kivy/examples/demo/touchtracer/'),
a.binaries,
#...
)
We are done. Your spec is ready to be executed!
Build the spec
Double click on Kivy.bat
Go to the pyinstaller directory, and build the spec:
cd pyinstaller-2.1
python pyinstaller.py touchtracer\touchtracer.spec
The package will be in the touchtracer\dist\touchtracer directory.

Categories