How to add a library path to pythonpath ?

Steve Holden steve at holdenweb.com
Tue Mar 16 17:56:21 CET 2010


Dave Angel wrote:
> Barak, Ron wrote:
>>  
>>> -----Original Message-----
>>> From: Dave Angel [mailto:davea at ieee.org]
>>> Sent: Tuesday, March 16, 2010 5:04 PM
>>> To: Barak, Ron
>>> Cc: Pablo Recio Quijano; python-list at python.org
>>> Subject: RE: How to add a library path to pythonpath ?
>>>
>>>
>>>
>>> Barak, Ron wrote:
>>>    
>>>> Thanks for the suggestion Pable.
>>>>
>>>> However, I really need the $PYTHONPATH to include this
>>>>       
>>> additional library, so all Python scripts could use it.
>>>    
>>>> In Windows I have defined PYTHONPATH as
>>>> c:\views\cc_view\TS_svm_ts_tool\SVMInspector\lib\, and also in the
>>>> Windows registry I have
>>>>
>>>>
>>>>       
>>> HKEY_LOCAL_MACHINE\SOFTWARE\Python\PythonCore\version\PythonPath\ as
>>>    
>>> C:\Python26\Lib;C:\Python26\DLLs;C:\views\cc_view\TS_svm_ts_tool\SVMIn
>>>    
>>>> spector\lib\;C:\Python26\Lib\lib-tk;
>>>>
>>>> However, even with all the above, the SVMInspecor modules
>>>>       
>>> are not found.
>>>    
>>>>       
>>> See my response at the end.  Top-posting makes for a very
>>> confusing thread.
>>>    
>>>> <snip>
>>>>
>>>> 2010/3/16 Barak, Ron <Ron.Barak at lsi.com<mailto:Ron.Barak at lsi.com>>
>>>>
>>>> Hi,
>>>>
>>>> I'm trying to add a library path to my pythonpath, but
>>>>       
>>> seems it is not
>>>    
>>>> accepted -
>>>>
>>>> On Windows DOS window:
>>>>
>>>> C:\>echo %PYTHONPATH%
>>>> c:\views\cc_view\TS_svm_ts_tool\SVMInspector\lib\
>>>>
>>>> C:\>python -c "import sys ; print sys.path"
>>>> ['', 'c:\\views\\cc_view\\TS_svm_ts_tool\\SVMInspector\\lib',
>>>> 'C:\\WINDOWS\\syst em32\\python26.zip', 'C:\\Python26\\DLLs',
>>>> 'C:\\Python26\\lib', 'C:\\Python26\\l ib\\plat-win',
>>>> 'C:\\Python26\\lib\\lib-tk', 'C:\\Python26', 'C:\\Python26\\lib\\
>>>> site-packages',
>>>> 'C:\\Python26\\lib\\site-packages\\wx-2.8-msw-unicode']
>>>>
>>>> C:\>
>>>>
>>>> On Windows cygwin:
>>>>
>>>> $ echo $PYTHONPATH
>>>> .:/cygdrive/c/views/cc_view/TS_svm_ts_tool/SVMInspector/lib/
>>>>
>>>> $ python -c "import sys ; print sys.path"
>>>> ['',
>>>>
>>>>       
>>> '.:\\cygdrive\\c\\views\\cc_view\\TS_svm_ts_tool\\SVMInspector\\lib',
>>>    
>>>> 'C:\\WINDOWS\\system32\\python26.zip', 'c:\\Python26\\DLLs',
>>>> 'c:\\Python26\\lib', 'c:\\Python26\\lib\\plat-win',
>>>> 'c:\\Python26\\lib\\lib-tk', 'c:\\Python26',
>>>> 'c:\\Python26\\lib\\site-packages',
>>>> 'c:\\Python26\\lib\\site-packages\\wx-2.8-msw-unicode']
>>>>
>>>> $
>>>>
>>>> What am I doing wrong ?
>>>>
>>>> Thanks,
>>>> Ron.
>>>>
>>>>
>>>>
>>>>       
>>> In your original message, what you displayed worked exactly
>>> as expected.  As you didn't say what made you think something
>>> was wrong, I ignored the message.
>>>
>>> Now, you say that some modules are not found.  So how about
>>> giving some more specifics so someone can actually debug the
>>> problem.  Pick a particular module, tell us the complete path
>>> to that module, and show us both the sys.path strings (which
>>> look correct for the Windows case, and of course bogus for
>>> the cygwin case), as well as the offending import statement
>>> and its traceback.
>>>
>>> DaveA
>>>     
>>
>> Hi Dave,
>>
>> My Python is the Windows Python (I need this for wxPython):
>>
>> $ ls -ls `which python`
>> 1 lrwxrwxrwx 1 rbarak mkgroup-l-d 31 Mar  4 14:02 /usr/bin/python ->
>> /cygdrive/c/Python26/python.exe
>>
>> Here's a demo script:
>>
>> #!/usr/bin/env python
>>
>> import sys
>> print "\n",sys.path,"\n"
>>
>> from ErrorManager.ErrorManager import ErrorManager
>>
>> And it's run produces:
>>
>> $ python -u  tmp.py
>>
>> ['c:\\views\\cc_view\\TS_svm_ts_tool\\svm_ts_tool',
>> '.:\\cygdrive\\c\\views\\cc_view\\TS_svm_ts_tool\\SVMInspector\\lib',
>> 'C:\\WINDOWS\\system32\\python26.zip', 'c:\\Python26\\DLLs',
>> 'c:\\Python26\\lib', 'c:\\Python26\\lib\\plat-win',
>> 'c:\\Python26\\lib\\lib-tk', 'c:\\Python26',
>> 'c:\\Python26\\lib\\site-packages',
>> 'c:\\Python26\\lib\\site-packages\\wx-2.8-msw-unicode']
>>
>> Traceback (most recent call last):
>>   File "tmp.py", line 6, in <module>
>>     from ErrorManager.ErrorManager import ErrorManager
>> ImportError: No module named ErrorManager.ErrorManager
>>
>> $ ls -ls
>> /cygdrive/c/views/cc_view/TS_svm_ts_tool/SVMInspector/lib/ErrorManager/ErrorManager.py
>>
>> 4 -rwxr-xr-x 1 rbarak ???????? 1843 Sep 21 19:16
>> /cygdrive/c/views/cc_view/TS_svm_ts_tool/SVMInspector/lib/ErrorManager/ErrorManager.py
>>
>>
>> $ grep ErrorManager 
>> /cygdrive/c/views/cc_view/TS_svm_ts_tool/SVMInspector/lib/
>> ErrorManager/ErrorManager.py
>> class ErrorManager:
>>
>> $ echo $PYTHONPATH
>> .:/cygdrive/c/views/cc_view/TS_svm_ts_tool/SVMInspector/lib/
>>
>> Please let me know if the above is enough, or you'd like to see the
>> results from a Windows' DOS window.
>>
>> Thanks,
>> Ron.
>>
>>   
> Well, I pointed out that your cygwin path is bogus, so of course it
> won't work.  One of those entries is
> 
>    '.:\\cygdrive\\c\\views\\cc_view\\TS_svm_ts_tool\\SVMInspector\\lib'
> 
> I use Linux, and I use Windows.  But cygwin's glomming together has
> never made sense;  some things are Unix-like, and others are
> Windows-like.  So anything you do in that environment is beyond me.
> 
> If I had to guess, though I'd say you wanted to drop those first two
> characters from your PYTHONPATH.  If you really wanted two directories
> there, you should be separating them with semicolon (Windows rules),
> rather than colon (Linux rules).  First thing I'd do to test my theories
> is to print something like:
>     print sys.path[1]
>     print os.listdir(sys.path[1])
> Does Python even see the cygwin view of the world ?
> 
> You also don't show the location of the module you're trying to import. 
> I'm guessing that it's at ...SVMInspector/lib/ErrorManager/ErrorManager.py
> Do you have a file     ...SVMInspector/lib/ErrorManager/__init__.py     ?
> 
> I would seriously recommend against naming your package, your module,
> and your class all the same thing.  Makes debugging very hard.  At least
> make them have different case combinations.
> 
In point of fact the mistake that's happening here is running the
Windows Python under Cygwin and expecting it to make sense.

Just because you run the Windows Python interpreter under Windows
doesn't make it magically capable of understanding a Cygwin path
specification.

We have yet to hear why the Cygwin Python isn't acceptable (though one
reason might be the unavailability of 2.6).

regards
 Steve
-- 
Steve Holden           +1 571 484 6266   +1 800 494 3119
See PyCon Talks from Atlanta 2010  http://pycon.blip.tv/
Holden Web LLC                 http://www.holdenweb.com/
UPCOMING EVENTS:        http://holdenweb.eventbrite.com/




More information about the Python-list mailing list