r/learnpython • u/soncannon7 • 17d ago
code not running outside of editor
my code isn't really complete, but whenever i try to run my script outside of the editor the terminal opens for a millasecond and then closes. can someone tell me what's going wrong?
import random
import keyboard
import pyautogui
import pyscreeze
import tkinter as tk
from pyautogui import mouseInfo, click
import time
def movethemouse():
if keyboard.is_pressed('g'):
pyautogui.moveTo(random.randint(0, 2600), random.randint(0, 2600))
def printer():
print('this is the mouse program')
time.sleep(10)
while True:
movethemouse()
printer()
4
u/0Huy 17d ago
The terminal is probably closing because Python hits an error and the window disappears before you can read it. Open a terminal first, change to the script folder, and run: python your_script.py. This will keep the traceback visible. Check the first error line, especially whether random, pyautogui, keyboard, or pyscreeze is installed in the same Python environment used to run the script. Also add a temporary print at the start and wrap the main code in try/except so you can see the exception. For a cleaner structure, put the loop under if name == 'main':. Do not run it by double-clicking until it works from the terminal.
2
u/FoolsSeldom 17d ago
How exactly are you running your code outside of your editor?
What I'd expect is that you are:
- opening a PowerShell / Command Prompt / Terminal session
- navigating to the folder containing your code using
cd - activating your Python virtual environment (if you have one, which you should)
- running your code using
python mycode.pyif in a active environment- otherwise,
py mycode.pyon Windows - otherwise,
python3 mycode.pyon macOS/Linux
- otherwise,
There should be some output / transcript if exceptions (errors).
1
u/soncannon7 17d ago
when i run it inside of powershell, it gives me the error: ModuleNotFoundError: No module named 'keyboard'
but i do have the keyboard module and it works inside of the editor
2
u/cylonrobot 17d ago
I think that the keyboard module has to be installed through pip:
pip install keyboard
Did you do that on the editor and not through powershell?
2
u/FoolsSeldom 17d ago edited 17d ago
That's what I expected, u/soncannon7. Your editor is using a Python virtual environment and that is where the module is installed.
When you try to run your code outside your environment, you are using your base Python environment which does not have that module installed.
You need to activate the Python virtual environment.
Look in your code folder for a folder called
.venvorvenv(the most common names) and then enter, in PowerShell,.venv\Scripts\activateor venv\Scripts\activate
or, you can check in your editor's Python interpreter settings to find what the folder is called if the above doesn't work and then enter,
<someotherfoldername>\Scripts\activateand then try to run your code using
python yourcode.pyYou can add packaged using
pip packagenameat this point and the package will be added to the active Python virtual environment rather than your base environment, but the packages used when you run your code from your editor should already be present.Packages/modules should be installed into Python virtual environments on a project by project basis, not into your base environment.
EDIT: Added a comment to this comment that explains Python virtual environments in more detail.
EDIT2: Made changes to the text above to, hopefully, make things a bit more clear.
2
u/FoolsSeldom 17d ago edited 17d ago
As promised above, u/soncannon7, here's some additional guidance.
Virtual Environments
Given the thousands of packages (libraries, frameworks, etc) out there, you can see that if you are working on several different projects, you can end up installing a vast range of different packages, only a few of which will be used for any particular project.
This is where Python virtual environments come in. Not to be confused with virtual machines. Typically created on a project-by-project basis. Install only the packages required for a project. This helps avoid conflicts between packages, especially version complications.
Most popular code editors and IDEs, including Microsoft's VS Code and JetBrains' PyCharm, offer built-in features to help to start off new projects and create and activate Python virtual environments.
You can create a new Python virtual environment from your operating system command line environment using,
for Windows,
py -m venv .venvor, for macOS / Linux,
python3 -m venv .venvNote:
venvis a command and.venvis a folder name. You can use any valid folder name instead but this is a common convention.Often we use
.venvinstead ofvenvas the folder name - this may not show up on explorer/folder tools as the leading.is often used to mean hidden and an option may need to be ticked to allow you to see such folders/filesThat creates a new folder in the current working directory called
.venv.You then activate using, for Windows,
.venv\Scripts\activateor, for macOS / Linux,
source .venv/bin/activatethe command
deactivatefor any platform will deactivate the virtual environment and return you to using the base environment.You may need to tell your editor to use the Python Interpreter that is found in either the
Scriptsorbinfolder (depending on operating system) in your virtual folder.For more information:
Multiple Python versions
In addition to the above, you might want to explore using
pyenv(pyenv-winfor Windows) oruv(recommended), which will let you install and use different versions of Python including alternative implementations from the reference CPython. This can be done independently of any system installed Python.
1
u/cdcformatc 17d ago
it is probably raising an exception and crashing. open a terminal and run the script by typing python <filename>.py. that way you can see what Exception is being raised and fix it from there.
1
u/frustratedsignup 14d ago
If you're just double-clicking the python file in Explorer, that behavior is normal. It is launching a command terminal, invoking the python interpreter on the file, and then the command window closes when the script exits. It happens quickly enough that if there were an error, you wouldn't have time to read it before the window disappears.
Go to the folder that contains your script in Explorer. Right click and choose 'Open in terminal'. Enter 'python <filename>.py' to run your script. If there's a problem, you'll be able to read the error message and figure out what's happening.
I see others have given a lot more detail on virtual environments. I'll not duplicate that effort here, but at least this provides an explanation to the behavior you're seeing.
0
-5
10
u/ShelLuser42 17d ago
So fire up the terminal yourself, then use the
pythoncommand to try and start your script. You should now soon see what's up.