Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Running python from a usb drive

2 views
Skip to first unread message

cjl

unread,
Sep 11, 2006, 1:14:58 PM9/11/06
to
Hey:

I am trying to run python from a usb drive under windows xp. I
installed python "for this user" on to a machine, then copied the
entire Python24 directory to the usb drive.

I have the following in a batch file at the root of the drive:

@path=%PATH%;%CD%Python24;%CD%Python24\libs;%CD%Python24\Scripts;%CD%Python24\Lib\site-packages;%CD%Python24\DLLs
@set pythonpath = %CD%Python24
@cmd

When I double click the file and type 'python' at the prompt I am in a
working python environment, and I am able to import modules in the
site-packages directory (in this case, django).

However, when I run a script directly from the cmd prompt (in this case
'django-admin.py' the script runs, but fails to import modules from the
site-packages directory.

Is there a command line option to python.exe or an environment variable
I can set to remedy this?

Any other thoughts?

Thanks in advance,
CJL

Jordan

unread,
Sep 11, 2006, 3:01:36 PM9/11/06
to
If making a usb version of python was that easy, movable python would
be open source. Check out http://www.voidspace.org.uk/python/movpy/ if
you need a portable usb version of python for work or something.
Copying the Python24 directory is a good start, but doesn't include the
enormous number of registry keys that are included in the install and
are probably needed for the complete capabilites of python. I really
hope I didn't missunderstand what you were asking about -_-;
Environmental Variables? Try setting the user/system variable
"pythonpath"

cjl

unread,
Sep 11, 2006, 3:34:22 PM9/11/06
to
Jordan:

Thank you for your reply.

> If making a usb version of python was that easy, movable python would
> be open source.

I knew about movable python, but I'm not using it because it's not open
source. I guess those guys but some work into it, and feel like a small
fee is appropriate, but I guess I would rather use something open, even
if it means I have to make it myself.

> Copying the Python24 directory is a good start, but doesn't include the
> enormous number of registry keys that are included in the install and
> are probably needed for the complete capabilites of python.

Is the source of the windows python installer available? I guess I
could see what registry keys they are setting...

> Environmental Variables? Try setting the user/system variable "pythonpath"

I do set pythonpath, see above.

Any other ideas?

Thanks again,
CJL

Uwe Hoffmann

unread,
Sep 11, 2006, 4:10:02 PM9/11/06
to
cjl schrieb:

>
>
> I do set pythonpath, see above.
>

is pythonpath really case insensitive on windows ?

Steve Holden

unread,
Sep 11, 2006, 4:37:07 PM9/11/06
to pytho...@python.org

Only because the Windows filesystem implements case-insensitive
semantics. This is nothing to do with Python:

C:\Steve\Projects\Python\dbimp>dir DB.py
Volume in drive C has no label.
Volume Serial Number is 9CA8-2A02

Directory of C:\Steve\Projects\Python\dbimp

01/19/2005 06:03 PM 136 db.py
1 File(s) 136 bytes
0 Dir(s) 15,908,880,384 bytes free

C:\Steve\Projects\Python\dbimp>dir db.py
Volume in drive C has no label.
Volume Serial Number is 9CA8-2A02

Directory of C:\Steve\Projects\Python\dbimp

01/19/2005 06:03 PM 136 db.py
1 File(s) 136 bytes
0 Dir(s) 15,908,880,384 bytes free


regards
Steve
--
Steve Holden +44 150 684 7255 +1 800 494 3119
Holden Web LLC/Ltd http://www.holdenweb.com
Skype: holdenweb http://holdenweb.blogspot.com
Recent Ramblings http://del.icio.us/steve.holden

Uwe Hoffmann

unread,
Sep 11, 2006, 4:42:44 PM9/11/06
to
Steve Holden schrieb:

> Uwe Hoffmann wrote:
>
>> cjl schrieb:
>>
>>
>>>
>>> I do set pythonpath, see above.
>>>
>>
>> is pythonpath really case insensitive on windows ?
>
>
> Only because the Windows filesystem implements case-insensitive
> semantics. This is nothing to do with Python:

no, i mean't the name not the content. Is the handling of the
env variable pythonpath case insensitive: pythonpath <--> PYTHONPATH.

regards
uwe

cjl

unread,
Sep 11, 2006, 4:41:01 PM9/11/06
to
Uwe:

Thank you for your reply.

> is pythonpath really case insensitive on windows ?

I think so. After running my batch file, I can load the python
interpreter by typing 'python', and can then type 'import django'
without error. This lives in the site-packages directory, so it is
finding it.

However, there is a python script that lives in python24\Scripts called
'django-admin.py', which I am adding to my path. When I type
'django-admin.py --help' I get an error that it couldn't load the
django module. When I type 'python E:\python24\django-admin.py --help'
I get the correct output, and no errors, so I know it is loading the
module.

I guess I am trying to figure out why, and what the top "shebang" line
should be for the script django-admin.py, because the removable drive
can have different drive letters, so I can't hard code it.

thanks again,
CJL

Steve Holden

unread,
Sep 11, 2006, 5:44:14 PM9/11/06
to pytho...@python.org
You live and learn. Apparently it is:

C:\Steve\Projects\Python\dbimp>set SCREWUP="This is Windows"

C:\Steve\Projects\Python\dbimp>python
Python 2.4.2 (#67, Sep 28 2005, 12:41:11) [MSC v.1310 32 bit (Intel)] on
win32
Type "help", "copyright", "credits" or "license" for more information.
Started with C:/Steve/.pythonrc
>>> import os; print os.environ["screwup"]
"This is Windows"
>>>

It turns out that there's code in os.py specifically for os2 and NT
systems, wherein a subclass of userDict is declared that used
case-insensitive pattern matching:

>>> os.environ.__class__
<class os._Environ at 0x0098CCC0>

Thorsten Kampe

unread,
Sep 11, 2006, 7:20:38 PM9/11/06
to
* cjl (2006-09-11 20:34 +0100)

>> Copying the Python24 directory is a good start, but doesn't include the
>> enormous number of registry keys that are included in the install and
>> are probably needed for the complete capabilites of python.
>
> Is the source of the windows python installer available? I guess I
> could see what registry keys they are setting...

Simply installing Python would be about one hundred times faster...

>> Environmental Variables? Try setting the user/system variable "pythonpath"
>
> I do set pythonpath, see above.
>
> Any other ideas?

Use Cywin Python.

Thorsten Kampe

unread,
Sep 11, 2006, 7:23:02 PM9/11/06
to
* Steve Holden (2006-09-11 21:37 +0100)

> Uwe Hoffmann wrote:
>> cjl schrieb:
>>>I do set pythonpath, see above.
>>
>> is pythonpath really case insensitive on windows ?
>
> Only because the Windows filesystem implements case-insensitive
> semantics. This is nothing to do with Python:

That's nonsense: "Filenames are Case Sensitive on NTFS Volumes"[1]

Thorsten
[1] http://support.microsoft.com/kb/100625/en-us

Steve Holden

unread,
Sep 11, 2006, 8:30:53 PM9/11/06
to pytho...@python.org

Sigh. Right, the semantics are actually inside the subsystem accessing
the filesystem, if I have to dot every I and cross every T. Note that
the reference you quote includes the test """However, if you attempt to
open one of these files in a Win32 application, such as Notepad, you
would only have access to one of the files, regardless of the case of
the filename you type in the Open File dialog box."""

So perhaps I should have said the Win32 API implements case-insensitive
semantics? Sure, if you want to use the POSIX compatibility layer it's
absolutely possible to create several files that Win32 applications will
be completely unable to distinguish between. Whatever good that might do
you.

Sheesh, the nits that get picked on this list nowadays. I can remember
when it used to be fun, not an exercise in ego inflation.

Thorsten Kampe

unread,
Sep 11, 2006, 9:04:34 PM9/11/06
to
* Steve Holden (2006-09-12 01:30 +0100)

> Thorsten Kampe wrote:
>> * Steve Holden (2006-09-11 21:37 +0100)
>>>Uwe Hoffmann wrote:
>>>>cjl schrieb:
>>>>
>>>>>I do set pythonpath, see above.
>>>>
>>>>is pythonpath really case insensitive on windows ?
>>>
>>>Only because the Windows filesystem implements case-insensitive
>>>semantics. This is nothing to do with Python:
>>
>> That's nonsense: "Filenames are Case Sensitive on NTFS Volumes"[1]
>>
>> Thorsten
>> [1] http://support.microsoft.com/kb/100625/en-us
>
> Sigh. Right, the semantics are actually inside the subsystem accessing
> the filesystem, if I have to dot every I and cross every T. Note that
> the reference you quote includes the test """However, if you attempt to
> open one of these files in a Win32 application, such as Notepad, you
> would only have access to one of the files, regardless of the case of
> the filename you type in the Open File dialog box."""
>
> So perhaps I should have said the Win32 API implements case-insensitive
> semantics? Sure, if you want to use the POSIX compatibility layer it's
> absolutely possible to create several files that Win32 applications will
> be completely unable to distinguish between. Whatever good that might do
> you.
>
> Sheesh, the nits that get picked on this list nowadays. I can remember
> when it used to be fun, not an exercise in ego inflation.

It's exactly the same issue as with the environment variables: "You
live and learn."[1]

Thorsten
[1] http://groups.google.com/group/comp.lang.python/msg/249fa3ce96e757b3

cjl

unread,
Sep 11, 2006, 9:34:32 PM9/11/06
to
Hey all:

I'm getting closer. My startpython.bat file is now:

path=%PATH%;%CD%Python24;%CD%Python24\libs;%CD%Python24\Scripts;%CD%Python24\Lib\site-packages;%CD%Python24\DLLs

set PYTHONPATH=%CD%Python24
ASSOC .py=Python.File
ASSOC .pyc=Python.CompiledFile
ASSOC .pyo=Python.CompiledFile
ASSOC .pyw=Python.NoConFile
FTYPE Python.File=%CD%Python24\python.exe "%1" %*
FTYPE Python.CompiledFile=%CD%Python24\python.exe "%1" %*
FTYPE Python.NoConFile=%CD%Python24\pythonw.exe "%1" %*
set PATHTEXT=%PATHTEXT%;.py;.pyc;.pyo;.pyw
cmd

I am having a problem with the ftype commands as written above. If I
type them from the command line exactly like above they work. But for
some reason they do not work from my batch file. Anyone familiar with
bath file syntax that can help me? I am very close here...

Thanks again,
CJL

cjl

unread,
Sep 11, 2006, 9:54:56 PM9/11/06
to
Hey all:

It seems no matter what I do the %1 gets replaced by paramaters sent to
the batch file...there must be some way of "escaping" this, but I can't
find the answer (yet) with google. Anyone?

-CJL

Jason

unread,
Sep 11, 2006, 10:35:23 PM9/11/06
to

Use two percents in a row turn into a single percentage sign. So you'd
want "%%1".

--Jason

cjl

unread,
Sep 12, 2006, 8:10:06 AM9/12/06
to
Jason:

Thanks! That worked...in fact, almost everything is now working as
expected (so far).

Here is my batch file:

echo "Making changes to path and file associations..."
path =


%PATH%;%CD%Python24;%CD%Python24\libs;%CD%Python24\Scripts;%CD%Python24\Lib\site-packages;%CD%Python24\DLLs
set PYTHONPATH=%CD%Python24
ASSOC .py=Python.File
ASSOC .pyc=Python.CompiledFile
ASSOC .pyo=Python.CompiledFile
ASSOC .pyw=Python.NoConFile

FTYPE Python.File=%CD%Python24\python.exe "%%1" %%*
FTYPE Python.CompiledFile=%CD%Python24\python.exe "%%1" %%*
FTYPE Python.NoConFile=%CD%Python24\pythonw.exe "%%1" %%*
set PATHTEXT=.py;%PATHTEXT%
CMD

I'm still having a problem with setting PATHTEXT...I should be able to
now type django-admin at the cmd prompt and have it work, but I need to
still type django-admin.py ... I'm not sure what's wrong with my
setting of pathtext.

Any ideas?

Thanks again,
CJL

Tim Golden

unread,
Sep 12, 2006, 8:18:09 AM9/12/06
to pytho...@python.org
[cjl]

[... snip ...]

| set PATHTEXT=.py;%PATHTEXT%

| I'm still having a problem with setting PATHTEXT...

That would be because it's PATHEXT not PATHTEXT (it's sort
of like a PATH but for EXTensions).

TJG

________________________________________________________________________
This e-mail has been scanned for all viruses by Star. The
service is powered by MessageLabs. For more information on a proactive
anti-virus service working around the clock, around the globe, visit:
http://www.star.net.uk
________________________________________________________________________

cjl

unread,
Sep 12, 2006, 8:34:38 AM9/12/06
to
Tim:

> That would be because it's PATHEXT not PATHTEXT (it's sort
> of like a PATH but for EXTensions).

Doh.

Me fail English? That's unpossible.

Thanks, I think everything is working with my poor man's movable
python.
Last on my todo list is to restore the assoc and ftype settings when
I'm done, and I found:

http://portableapps.com/node/121

Which seems to show how to do that.

CJL

John Machin

unread,
Sep 12, 2006, 8:53:01 AM9/12/06
to


Congratulations. Now: how much time have you spent, and how much per
hour are you worth?

hours * dollars_per_hour < GBP_to_USD(4.99) ???

cjl

unread,
Sep 12, 2006, 9:47:44 AM9/12/06
to
John:

> Congratulations. Now: how much time have you spent, and how much per
> hour are you worth? hours * dollars_per_hour < GBP_to_USD(4.99) ???

Since you mention it, I am currently earning about $200 an hour (when
I'm working), and I spent about 3 hours on this, so this cost me about
$600. I think 4.99 GBP (the price of movable python) translates to
about 9 or 10 dollars. So all told this cost me about $590.

Well worth it at twice the price, because I did it myself, I learned
from doing it, others my learn from it, and it is "open", unlike
movable python.

Any ideas about how to set file type associations without writing to
the registry?

Thanks again,
CJL

Tim Golden

unread,
Sep 12, 2006, 9:54:52 AM9/12/06
to pytho...@python.org
[cjl]

| Any ideas about how to set file type associations without writing to
| the registry?

Well, yes. Just the same as was in the article you pointed
to... or have I missed something?

assoc .py=python.file
ftype python.file="c:\python24\python.exe" "%1" %*

(or whatever version of Python).

Obviously switching like this is prone to the difficulties
outlined there: if something crashes and you don't change
back, you're stuck until you change it back manually.

Tim Golden

unread,
Sep 12, 2006, 10:14:43 AM9/12/06
to pytho...@python.org
| [cjl]
|
| | Any ideas about how to set file type associations without writing to
| | the registry?
|
[Tim Golden]

| Well, yes. Just the same as was in the article you pointed
| to... or have I missed something?

Ah, I see. Presumably the FTYPE / ASSOC commands write things
to the registry behind the scenes. So I assume you mean:
without writing anything away permanently
which might then be held there in the case of a crash. Well, I
don't think so. You could, I supposed have a script which reset
any associations to their default which could then set up to run
on startup, but I don't know how viable that is for your situation.

Thorsten Kampe

unread,
Sep 12, 2006, 1:04:43 PM9/12/06
to
* cjl (2006-09-12 13:10 +0100)

Setting environment variables has only effect on the process itself
and the subprocesses. This has nothing to do with Windows, it's the
same with Linux.

cjl

unread,
Sep 12, 2006, 2:43:37 PM9/12/06
to
Thorsten:

Thank you for your reply.

> Setting environment variables has only effect on the process itself


> and the subprocesses. This has nothing to do with Windows, it's the
> same with Linux.

True, and the changes to path and pythonpath are gone after I close the
console window, but the results of the assoc and ftype commands are
changes to the registry that linger. If I run my setup on a computer
that has python installed, I will overwrite the pre-existing registry
settings. I can restore them with a script, but I can't guarantee that
my restore script will run.

I'm still looking for a way to modify these temporarily, but it looks
like I might be "up the creek" on this one. Oh well.

Thanks again,
CJL

Jason

unread,
Sep 13, 2006, 12:00:34 PM9/13/06
to

I notice that you've already got the environmental variables set up to
run your Temp-Python. You can retrieve the current associations (if
any) by using the assoc and ftype commands:

C:\>assoc .py
.py=Python.File

C:\>ftype Python.File
Python.File="C:\Python24\python.exe" "%1" %*

C:\>assoc .NotAnExtension
File association not found for extension .NotAnExtension

C:\>

Using this information, you could write a little python script with
your distribution which records the current file associations and
settings. Then, when you're ready to revert, you run another little
python script which restores the associations.

These associations are also stored in the registry. You could back up
the registry keys which you know will be modified, make the registry
changes yourself, and restore the registry settings at finish. It
would require Python's win32 extension modules, though.

I don't know how you could do it without using a
backup/run-stuff/restore sequence.

--Jason

0 new messages