Newbie thwarted by sys.path on Vista

  • Thread starter Michael M Mason
  • Start date
M

Michael M Mason

I'm running Python 3.1 on Vista and I can't figure out how to add my own
directory to sys.path.

The docs suggest that I can either add it to the PYTHONPATH environment
variable or to the PythonPath key in the registry. However, PYTHONPATH
doesn't exist, and updating the registry key has no effect (and in any case
the contents aren't the same as sys.path).

So where does sys.path get its value from, and how do I change it?
 
J

Jon Clements

I'm running Python 3.1 on Vista and I can't figure out how to add my own
directory to  sys.path.

The docs suggest that I can either add it to the PYTHONPATH environment
variable or to the PythonPath key in the registry.  However, PYTHONPATH
doesn't exist, and updating the registry key has no effect (and in any case
the contents aren't the same as sys.path).

So where does sys.path get its value from, and how do I change it?

sys.path is just a list. So in your 'main' module where you do most of
your imports, just append or prepend the path you desire (the search
order is left to right). Although, I believe under Windows creating a
system level or user level PYTHONPATH environment variable will enable
Windows to pick it up. Not 100% sure as I don't have a Windows machine
handy.
 
P

Piet van Oostrum

Michael M Mason said:
MMM> I'm running Python 3.1 on Vista and I can't figure out how to add my own
MMM> directory to sys.path.
MMM> The docs suggest that I can either add it to the PYTHONPATH environment
MMM> variable or to the PythonPath key in the registry. However, PYTHONPATH
MMM> doesn't exist,

Then create it.
 
D

David Lyon

I'm running Python 3.1 on Vista and I can't figure out how to add my own
directory to sys.path.

The docs suggest that I can either add it to the PYTHONPATH environment
variable or to the PythonPath key in the registry. However, PYTHONPATH
doesn't exist, and updating the registry key has no effect

So where does sys.path get its value from, and how do I change it?

The simplest hack (worst - but most direct) is that sys.path is a list
and you can use it like any other list. (add, delete, change items in it)

It gets loaded from site.py (in the standardard library) at startup.

Anything else you'll have to ask somebody else.

David
 
D

Dave Angel

Michael said:
<div class="moz-text-flowed" style="font-family: -moz-fixed">I'm
running Python 3.1 on Vista and I can't figure out how to add my own
directory to sys.path.

The docs suggest that I can either add it to the PYTHONPATH
environment variable or to the PythonPath key in the registry.
However, PYTHONPATH doesn't exist, and updating the registry key has
no effect (and in any case the contents aren't the same as sys.path).

So where does sys.path get its value from, and how do I change it?
sys.path gets its values from several places. The ones I think I know
of are:

current directory (which uses "" rather than the expected ".")
directories listed in PythonPath environment variable
Windows-system directory
relative to the executable (python.exe or pythonw.exe) that's
actually running
relative to the user directory (docs&settings/username/Application
Data ....

If there's no PythonPath variable, it just uses those other items. I
have no idea what it gets from the registry entries.

Anyway, I'd suggest adding it to PythonPath, and if it's empty, just
create it with the directory you need.

I'm hoping you know you can also add to sys.path directly during script
initialization. It's just a list, and is writeable.
 
M

Michael M Mason

Thanks to Jon, Piet, David and Dave for the responses.
sys.path gets its values from several places.

Ah, I'd misunderstood the docs: I thought it came from just one place (which
I couldn't find).
Anyway, I'd suggest adding it to PythonPath, and if it's empty, just
create it with the directory you need.

Thanks--that worked!
I'm hoping you know you can also add to sys.path directly during script
initialization. It's just a list, and is writeable.

Yes, but I'm mainly playing in IDLE and I was getting a bit fed up of
repeatedly typing
import sys
sys.path.append('C:/Users/Michael/Code/Python')
import mystuff
 
M

Mark Lawrence

Michael said:
Thanks to Jon, Piet, David and Dave for the responses.


Ah, I'd misunderstood the docs: I thought it came from just one place
(which I couldn't find).


Thanks--that worked!
Be careful, I'm screwed things up on several occasions by placing a file
on PYTHONPATH that overrides a file in the standard library, test.py
being my favourite!
 
M

Michael M Mason

Mark Lawrence said:
Be careful, I'm screwed things up on several occasions by placing a file
on PYTHONPATH that overrides a file in the standard library, test.py being
my favourite!

Thanks. Sure enough, I've already got my own test.py but I hadn't
discovered it was a problem yet...
 
M

Mark Lawrence

Michael said:
Thanks. Sure enough, I've already got my own test.py but I hadn't
discovered it was a problem yet...
Typical, tried to reproduce it and can't! Still at least you've been
warned.
 

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,767
Messages
2,569,570
Members
45,045
Latest member
DRCM

Latest Threads

Top