Change directory Python SimpleHTTPServer uses - python

Running a basic Python SimpleHTTPServer to check out some files in browser. Once the SimpleHTTPServer is running in one directory how do you stop it and use a different directory? or just have it switch to the new one.
Currently using in terminal:
python -m SimpleHTTPServer 8008
Then if I try to run on another directory it says it's already in use. So basically how to I stop a given instance of SimpleHTTPServer?

Then if I try to run on another directory it says it's already in use
You can only bind to each port once with SimpleHTTPServer. If you are already running the server on port 8008, you can not run another instance listening on that same port.
you should stop the server, and launch it from the other directory... or choose a different port number for running the 2nd instance.

Related

Cannot create local server HTTP port with python in Pycharm

I am trying to run the python .py file in PyScript. To do that, I need to load python file in a server because PyScript cannot access local file:
<py-script src="./greet.py"></py-script>
So I tried to create local server by entering this command in the terminal in the folder of my project:
python -m http.server
It has been over 30 minutes now and the server is not on. It shows that the terminal local is still running. It should take no more than a minute to be done. I have tried to locate specific port with:
python -m http.server 80 but it still doesn't work.
What should I do?
You might try also binding the server to a specific link-local IP address, using something like python -m http.server --bind 127.0.0.1 8000. The page should then appear at 127.0.0.1:8000.
This was necessary for me on Windows - even after allowing Python permissions to access the network. Not sure if it's Windows-related, or Python not identifying the correct NIC to bind to, or what.

Pycharm Can't run remote python interpreter error

I have an aws ec2 instance to which I want to access and work via pycharm but I cannot correctly configure access to the remote terminal.
The steps I do are these:
using github and pycharm I clone the project repository and at the start of the program, since there is no configured python interpreter I start the configuration by clicking on the button "configure python interpreter"
then select ssh interpreter and enter the ip address of the aws instance and username ubuntu
3) as key I choose a previously saved ppk file
4)continuing with the settings I select the interpreter like the one identified in the path usr/bin/python and as the project directory I select the directory of my project in home/ubuntu/MyProject
this is what i see after setting up the remote interpreter
all connection tests are passed successfully but when I run the code I get this error
Error running 'main': Can't run remote python interpreter: Error connecting to remote host
So how can I solve this problem?
finally I found a solution, by default pycharm set the path for the interpreter usr/bin/python but the correct one is usr/bin/python3, now everything works correctly
I had the same error with a different cause:
One of the docker volume bindings in the Run Configuration pointed to a non-existing host dir

server program exits when i close SSH connection to GCP

I have an Ubuntu instance on Google Cloud Platform (GCP). I want to use it as an HTTP server to access files. I simply use this python command, type it in bash:
python3 -m http.server 8000
This will run http.server module as a script, construct a simple HTTP server and listen at port 8000.
Problem is that, since I use GCP instance, I must connect to it remotely (for example I use SSH shell provided by GCP). When I close the SSH shell, the python HTTP server will stop. So what should I do to make sure that the server still runs after I close the shell?
I did searched on Google, and I tried to use
nohup python3 -m http.server 8000 &
This command, I quote, will run the instruction as a background program and persist running after exiting bash. But it seems that this doesn't work for my situation.
Anybody can help?
Try the screen command. I think it's easier to use and also more flexible than nohup as you can also reattach processes after detaching then. See this answer for details.
The http.server module is not meant to be a full-fledged webserver.
You'll want to set up something like Apache instead, see Running a basic Apache web server.

command-line python SimpleHTTPServer gets quickly terminate

I'm trying to demo a simple website using the python SimpleHTTPServer module. However, the server almost immediately is terminated. I'm ssh'd into the box, type:
python -m SimpleHTTPServer 8000
the webserver starts:
Serving HTTP on 0.0.0.0 port 8000 ...
and then displays Terminated and shuts down within a few seconds.
I'm at a loss as to what to look for. I'm using this same command on macOS with no problems; this is on a Linux box running python V2.7.9.

How can I create an local webserver for my python scripts?

I'm looking to use a local webserver to run a series of python scripts for the user. For various unavoidable reasons, the python script must run locally, not on a server. As a result, I'll be using HTML+browser as the UI, which I'm comfortable with, for the front end.
I've been looking, therefore, for a lightweight web server that can execute python scripts, sitting in the background on a machine, ideally as a Windows service. Security and extensibility are not high priorities as it's all running internally on a small network.
Should I run a native python webserver as a Windows service (in which case, how)? Or is it just as easy to install Apache onto the user's machine and run as CGI? Since this is all local, performance is not an issue either.
Or am I missing something obvious?
Don't waste a lot of time creating Windows service.
Don't waste a lot of time on Windows Apache.
Just make a Python service that responds to HTTP requests.
Look at https://docs.python.org/2/library/basehttpserver.html
https://docs.python.org/3/library/http.server.html for version 3
Python offers an HTTP server that you can extend with your server-side methods.
Look at http://docs.python.org/library/wsgiref.html
Python offers a WSGI reference implementation that makes your server easy and standards-compliant.
Also http://fragments.turtlemeat.com/pythonwebserver.php
"I'm trying to avoid making the user run python stuff from the command prompt."
I don't see how clicking a web page is any different from clicking desktop icons.
Starting a web server based on Python is relatively easy, once you have the web server. First, build the server. Later, you can make sure the server starts. Let's look at some ways.
Your user can't use a random browser to open your local page. They need a bookmark to launch "localhost:8000/myspecialserverinsteadofthedestop/" That bookmark can be a .BAT file that (1) runs the server, (2) runs firefox with the proper initial URL.
You can put the server in the user's start-this menu.
You can make your Python program a windows "service".
Best way is to make your own local server by using command prompt.
Make a new folder say Project
Make a new folder inside project & name it as "cgi-bin"(without quotes)
Paste your .py file inside the cgi-bin folder
Open cmd and change to the directory from which you want to run the server and type "python -m CGIHTTPServer"(without quotes)
Minimize the cmd window & open your browser and type "localhost:8000/cgi-bin/yourpythonfilename.py"(without quotes).
The wasiest step would be navigate to folder where your files are located and running http.server module
cd /yourapp
python3 -m http.server
the you should see something like this in console
Serving HTTP on 0.0.0.0 port 8000 (http://0.0.0.0:8000/) ...
Running a native python webserver as a windows service should be a no brainer. Check out the documentation for writing windows services (win32api, ActiveState python) in python and also the documentation for subclassing BaseHttpServer and SimpleHttpServer.
BTW: I had a similar question on stackoverflow: How to stop BaseHTTPServer.serve_forever() in a BaseHTTPRequestHandler subclass?
Basically, you subclass BaseHTTPServer (you have to anyway...) and then... but just read the accepted answer - it set me on the right track!

Categories

Resources