First program

P

Phil H

Hi,
Trying my hand with Python but have had a small hiccup.
Reading 'A byte of Python' and created helloworld.py as directed.

#!/usr/bin/python
# filename : helloworld.py
print 'Hello World'

At the terminal prompt cd to the file location and run from the prompt.

phil@grumpy:~/projects/python$ python helloworld.py
Hello World

All fine.

Then I tried the following as described in the tutorial and get the
following error

phil@grumpy:~/projects/python$ chmod a+x helloworld.py
phil@grumpy:~/projects/python$ ./helloworld.py
bash: ./helloworld.py: /usr/bin/python^M: bad interpreter: No such file
or directory

The permissions are: rwxr-xr-x.

Any help appreciated
Phil
 
P

Peter Otten

Phil said:
Hi,
Trying my hand with Python but have had a small hiccup.
Reading 'A byte of Python' and created helloworld.py as directed.

#!/usr/bin/python
# filename : helloworld.py
print 'Hello World'

At the terminal prompt cd to the file location and run from the prompt.

phil@grumpy:~/projects/python$ python helloworld.py
Hello World

All fine.

Then I tried the following as described in the tutorial and get the
following error

phil@grumpy:~/projects/python$ chmod a+x helloworld.py
phil@grumpy:~/projects/python$ ./helloworld.py
bash: ./helloworld.py: /usr/bin/python^M: bad interpreter: No such file
or directory

The permissions are: rwxr-xr-x.

Any help appreciated
Phil

Did you write your script on a windows machine? Your line endings seem to be
\r\n but you need \n. You can use dos2unix to fix the line endings:


$ cat -v tmp.py
#!/usr/bin/python^M
print 'hello world'^M
$ ./tmp.py
bash: ./tmp.py: /usr/bin/python^M: bad interpreter: No such file or
directory
$ dos2unix tmp.py
$ cat -v tmp.py
#!/usr/bin/python
print 'hello world'
$ ./tmp.py
hello world
$

Peter
 
C

Chris Rebert

Hi,
Trying my hand with Python but have had a small hiccup.
Reading  'A byte of Python' and created helloworld.py as directed.

#!/usr/bin/python
# filename : helloworld.py
print 'Hello World'

At the terminal prompt cd to the file location and run from the prompt.

phil@grumpy:~/projects/python$ python helloworld.py
Hello World

All fine.

Then I tried the following as described in the tutorial and get the
following error

phil@grumpy:~/projects/python$ chmod a+x helloworld.py
phil@grumpy:~/projects/python$ ./helloworld.py
bash: ./helloworld.py: /usr/bin/python^M: bad interpreter: No such file
or directory

The permissions are: rwxr-xr-x.

Any help appreciated

Seems your file is using Windows line endings (CR+LF) rather than Unix
line endings (just LF), which is messing up the processing of the
shebang line.
Run your file thru `dos2unix`
(http://gd.tuwien.ac.at/linuxcommand.org/man_pages/dos2unix1.html ).
Further info: http://en.wikipedia.org/wiki/Newline

Also, a more generic shebang line is usually recommended:
#!/usr/bin/env python

Cheers,
Chris
 
P

Phil H

Hi,
Trying my hand with Python but have had a small hiccup. Reading 'A byte
of Python' and created helloworld.py as directed.
<snip>
Any help appreciated
Phil

Thanks Peter & Chris for your prompt replies.
The line ending was the problem.
The script was written using Gedit on Ubuntu.
Cannot find a setting in Gedit to set the line ending but it must be
there somewhere so will keep looking.
Also how do you see or check the line endings of a file?

Thanks again
Phil
 
P

Peter Otten

Phil said:
Thanks Peter & Chris for your prompt replies.
The line ending was the problem.
The script was written using Gedit on Ubuntu.

Strange. Did you perhaps start with a file that you got from elsewhere and
modified that? Gedit may have left the CRs untouched then.
Cannot find a setting in Gedit to set the line ending but it must be
there somewhere so will keep looking.
Also how do you see or check the line endings of a file?

cat -v filename

is one option. CR (or "\r", or chr(13), or carriage return) shows up as ^M.
The ^ means "subtract 64 from the byte value", e. g.

^M = chr(ord("M")-64) = chr(77-64) = chr(13)

Peter
 
P

Phil Hansen

Phil H wrote:

Strange. Did you perhaps start with a file that you got from elsewhere
and modified that? Gedit may have left the CRs untouched then.

Found it. When using 'save as' there is an option box at the bottom where
you can select the line ending. Simple when you know how :)
cat -v filename
is one option. CR (or "\r", or chr(13), or carriage return) shows up as
^M. The ^ means "subtract 64 from the byte value", e. g.
^M = chr(ord("M")-64) = chr(77-64) = chr(13)
Peter

Thanks for the help
Cheers
Phil
 
A

Alister

Thanks Peter & Chris for your prompt replies. The line ending was the
problem.
The script was written using Gedit on Ubuntu. Cannot find a setting in
Gedit to set the line ending but it must be there somewhere so will keep
looking. Also how do you see or check the line endings of a file?

Thanks again
Phil

You may want to try installing geany from your package manager, it is a
pretty good but lightweight editor for programming with syntax
highlighting & the option to replace tabs/spaces as req
it also handles html,php, ruby & a whole host of others.

before I found geany I also used bluefish which is probably more
sophisticated but not as lightweight.



--
The Movement Formerly Known As Open Source

The battle over the Open Source trademark is heating up. Software in the
Public Interest and the Open Source Initiative both hold competing claims
to
the trademark. In order to put an end to the infighting, a group of free
software advocates have founded the Association for the Movement Formerly
Known as Open Source (AMFKOS)

One AMFKOS founder said, "I find it ironic that a trademark representing
free
software is itself proprietary. This situation must change. We propose
that
the free software movement adopt another name besides 'Open Source'.
Hopefully then we can all Get-Back-To-Coding(tm) instead of fighting over
Bruce Perens' and Eric Raymond's egos."

Rumor has it that Richard Stallman plans to mount a campaign to
promote the phrase "GNU/Free Software" in place of "Open Source".
In addition, the terms "Ajar Source", "Unlocked Source", "Nude Source",
"Unclosed Source", and "Just-Type-make Software" have all
been proposed by various Usenet or Slashdot posters.
 
G

Gabriel Genellina

Trying my hand with Python but have had a small hiccup.
Reading 'A byte of Python' and created helloworld.py as directed.

#!/usr/bin/python
# filename : helloworld.py
print 'Hello World'

At the terminal prompt cd to the file location and run from the prompt.

phil@grumpy:~/projects/python$ python helloworld.py
Hello World

All fine.

Then I tried the following as described in the tutorial and get the
following error

phil@grumpy:~/projects/python$ chmod a+x helloworld.py
phil@grumpy:~/projects/python$ ./helloworld.py
bash: ./helloworld.py: /usr/bin/python^M: bad interpreter: No such file
or directory

The permissions are: rwxr-xr-x.

Looks like you created helloworld.py on Windows, or using Windows-oriented
tools (perhaps a samba drive? ftp from a Windows disk?)
Windows text files end each line with the \r\n sequence (CR LF, bytes 0x0D
0x0A, ^M^J). Unix (and Linux) uses only a \n (LF, 0x0A). The \r will be
read as part of the previous line then.

There are tools to convert back and forth those formats (dos2unix and
unix2dos, or the crlf.py demo script in the Python source distribution).
But to avoid problems, it's better to use the right tools for the OS
you're working with (that is, don't use notepad to edit Linux files...)
 
P

Phil Hansen

Looks like you created helloworld.py on Windows, or using
Windows-oriented tools (perhaps a samba drive? ftp from a Windows disk?)
Windows text files end each line with the \r\n sequence (CR LF, bytes
0x0D 0x0A, ^M^J). Unix (and Linux) uses only a \n (LF, 0x0A). The \r
will be read as part of the previous line then.

There are tools to convert back and forth those formats (dos2unix and
unix2dos, or the crlf.py demo script in the Python source distribution).
But to avoid problems, it's better to use the right tools for the OS
you're working with (that is, don't use notepad to edit Linux files...)

Thanks.
See replies above. Used Gedit and ubuntu but saved in wrong format (there
is a choice and I didn't know better).
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,755
Messages
2,569,536
Members
45,014
Latest member
BiancaFix3

Latest Threads

Top