I have a piece of code that does two things: writes a .txt file to my current path and runs a module (which I can't see contents of as the files are all .pyc) which ultimately opens a tkinter GUI.
Here is the code:
import os.path
from tkinter import messagebox as msg
if not os.path.isfile('FAST Locked.txt'):
FASTlck = open('FAST Locked.txt', 'w+')
FASTlck.write('Locked')
FASTlck.close()
import pyFiles.FAST
os.remove('FAST Locked.txt')
else:
msg.showerror('FAST Locked', 'FAST is open by another user.\n' +\
'Please try again later')
exit()
When I run this code from an editor (IDLE or Spyder), it works perfectly. When I double click the .pyw file it only creates the .txt, I do not get the GUI. If I click the .pyw with the .txt file present, I DO get the error message. This makes me think it's something to do with the files inside this FAST module.
I'm running Python 3.7, recently had Anaconda installed on my work machine, previously they just ran Python 3.7 and used IDLE (every other work machine still does this, the code works fine). This makes me wonder if having conda/Spyder installed has messed it up?
Not sure which problem is more likely, and have no idea where to start as I'm relatively new to Python and all this code was written by someone else who's gone.
Related
I have created a python script that I am attempting to turn into an application on mac so that I do not have to alway open the terminal. I am using Tkinter to create a window that the script runs on.
I run pyinstaller --onefile -w -i "Icon Name" "myapp.py" and I get the Dist folder with both a unix script and a macOS application. Running the Unix Script works perfectly fine, however when I try and run the app it will breifly blink in the taskbar and then dissapear without doing anything. running open myapp in the terminal opens it fine, its just when I double click on it.
I have tried looking it up and PyInstaller App not opening on Mac leads me to this github thread https://github.com/pyinstaller/pyinstaller/issues/3753. I tried following along however when I get to the hook-_tkinter.py file mine is only 30 lines of code and looks like this:
import sys
from PyInstaller import compat
from PyInstaller.utils.hooks import logger
from PyInstaller.utils.hooks.tcl_tk import collect_tcl_tk_files
def hook(hook_api):
# Use a hook-function to get the module's attr:`__file__` easily.
"""
Freeze all external Tcl/Tk data files if this is a supported platform *or* log a non-fatal error otherwise.
"""
if compat.is_win or compat.is_darwin or compat.is_unix:
# collect_tcl_tk_files() returns a Tree, so we need to store it into `hook_api.datas` in order to prevent
# `building.imphook.format_binaries_and_datas` from crashing with "too many values to unpack".
hook_api.add_datas(collect_tcl_tk_files(hook_api.__file__))
else:
logger.error("... skipping Tcl/Tk handling on unsupported platform %s",
It does not have the specific lines that the thread is showing I need to edit. I should also note that I found the file in /opt/homebrew/lib/python3.10/site-packages/PyInstaller/hooks/hook-_tkinter.py instead of where the thread is pointing to. I cannot find this file there.
I also read somewhere (I forget where exactly) that I need TCL and tkinter installed which I thought I did already cause it comes with python. trying to find somewhere to download tcl brought me to activetcl but I am unsure how to install that on my computer so I am not sure if that is the solution or not because I cannot get it working.
Sorry for the long question but would anyone be able to assist me in getting this working?
http://pastebin.com/BJiXC022
At first my python is working just fine with tkinter. When I change the working directory, it somehow stops working then. It even manages to refer the tkinter.py file in that directory even when I never even typed the name of the file there. I just wanted to import tkinter. My tkinter.py file is also not working even though it is almost exactly the same as the first 10 lines. How do I fix this problem? I reinstalled os and python yesterday, I am running OS X 10.10.3 and the newest Python 3.4.3. Here's tkinter.py:
http://pastebin.com/VBHqFGLZ
You have a file named tkinter.py in /Users/nikolas/Documents/Python/tkinter.py. Changing to that directory and importing tkinter will import the local file, not the one from your Python installation. You see the error because your tkinter.py file does not provide Tk.
The solution is to rename your file to something other than tkinter.py.
I am having some trouble with opening a .py file. I have a program that calls this .py file (i.e. pathname/example.py file.txt), but instead of running the python program, it opens it in Notepad. How to I get it to run?
The program itself takes in a file, and creates an output that is more readable.
Edit: The operating system is Windows 7. And the file that is calling the python is a .bat file.
Edit 2: It looks like I had to reinstall python for some reason... but it looks like it is finally working. Why reinstalling never comes to mind in the first place... And then I had to change how the file extention was opened. Thanks guys
This happened because most probably you have set notepad as the default program to open a .py file. Go to default programs app in windows. Select choose app by extension. Here search for .py files. Change the option from notepad to python. This should solve your problem.
okay.
1) i tried turning it off and on again.
2) i uninstalled and reinstalled python
still no joy. and then!
in windows explorer there's an open with option that sets the default program that windows is pointed toward if you click on the filename or enter it on the command line. change that from notepad or whatever it is if it's not python. change it to python. then presto. no problem-o.
You need to run it from the command line.
http://docs.python.org/2/faq/windows.html#how-do-i-run-a-python-program-under-windows
Are you trying to run the program like this?
/dirdir/MyPythonScript.py
try the following instead
python /dirdir/MyPythonScript.py
I recently re-installed Python 2.7.3 from python.org on OSX 10.8.2, and now nothing (literally nothing I can see) happens when I double-click on .py files in Finder, or when I right-click/Open-With/IDLE(2.7.3). (Edit: IDLE is already set as the default program to open .py files; the "right-click" part was just to illustrate I couldn't open them either way.)
I have Tcl/Tk 8.5.13 installed (re-installed after I re-installed Python), and I can open IDLE itself just fine, so this isn't that issue where IDLE won't work without the right version of Tcl/Tk. I can also open .py files from the Terminal using idle -e file.py without a problem.
I did notice that the Python Launcher activates when I open files this way, and is absent when I double-click on .py files in Finder (although again, literally nothing happens when I do this--I have the IDLE icon in my dock and it doesn't start bouncing or anything). Could this be a Python Launcher problem? If not, does anyone know what's going on here?
Update: I tried opening IDLE first and then double-clicking on .py files, and that works. So it seems it's just an issue of IDLE not being opened when you try to open a .py file in the Finder.
I know that means I now have at least three other ways of opening my .py files in IDLE, but I really like just being able to navigate to a file in Finder and open it when IDLE itself is not yet open. So I'd still really like to solve this problem if possible (also I really hate when stuff that's just supposed to work doesn't).
Update: Per Ned Deily's suggestion I checked for errors using Console.app and found:
3/8/13 10:42:38.006 AM com.apple.launchd.peruser.501[276]: ([0x0-0x199199].org.python.IDLE[1975]) Exited with code: 1
pops up whenever I try to double-click a .py file in Finder.
Make sure you have set the intended instance of IDLE as the default application for all .py files. One way to do so is to select a .py file in a Finder window, then select the Finder -> File -> Get Info menu item (or Cmd-I). In the Open with: section, pull down the application menu item and select the desired IDLE; if you have multiple copies of IDLE installed, select the Other.. menu item at the bottom of the list and use the file chooser to select the right version of IDLE. Then, click the Change all... button to Use this application to open all documents like this one. You should now be able to launch a .py file in the desired IDLE by double-clicking. If this doesn't work, examine system.log to see if there are any error messages being logged. You can use the Console utility to examine logs (/Applications/Utilities/Console.app).
from Tkinter import *
import tkMessageBox
from test2_new import *
When I run this, python is saving a .pyw file of test2_new to the deskop. Why is this happening and how do i fix this? Thank you!
A pyw file is a windows specific format that is generated for GUi scripts. It causes windows to open the script directly in a window instead of launching a console. Most likely you are calling your script from the user desktop location. Try changing directories to your script location. Also if you are double click launching your py then it could also be defaulting to the desktop. Move that pyw to your script location and run that pyw directly.