473,385 Members | 1,356 Online
Bytes | Software Development & Data Engineering Community
Post Job

Home Posts Topics Members FAQ

Join Bytes to post your question to a community of 473,385 software developers and data experts.

Interactive os.environ vs. os.environ in script

Hi there,

I have a problem with setting environment variable in my script that
uses qt library. For this library I have to define a path to tell the
script whre to find it.

I have a script called "shrink_bs_070226" that looks like this:
**********************************
import sys, re, glob, shutil
import os

os.environ["LD_LIBRARY_PATH"]='/path/Linux/rh_linux'

from qt import *
***********************

When I run this script I get this error:

python shrink_bs_070226.py
Traceback (most recent call last):
File "shrink_bs_070226.py", line 25, in ?
from qt import *
File "/path/Linux/python/rh_linux/lib/python2.2/site-packages/
qt.py", line 46, in ?
import libsip
ImportError: libadamsqt.so: cannot open shared object file: No such
file or directory

What is important here that when I set this variable interactive in
python session, there is no problem with import.
python
Python 2.2.3 (#1, Aug 8 2003, 08:44:02)
[GCC 3.2.3 20030502 (Red Hat Linux 3.2.3-13)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>import os
>>import shrink_bs_070226
Traceback (most recent call last):
File "<stdin>", line 1, in ?
File "shrink_bs_070226.py", line 25, in ?
from qt import *
ImportError: No module named qt
>>os.environ["LD_LIBRARY_PATH"]='/path/Linux/rh_linux'
>>import shrink_bs_070226
Could anybody explain me the logic here? Am I missing something?
Thank in advance.
Rg
Boris

Feb 26 '07 #1
9 3729
bo***********@gmail.com wrote:
Hi there,

I have a problem with setting environment variable in my script that
uses qt library. For this library I have to define a path to tell the
script whre to find it.

I have a script called "shrink_bs_070226" that looks like this:
**********************************
import sys, re, glob, shutil
import os

os.environ["LD_LIBRARY_PATH"]='/path/Linux/rh_linux'

from qt import *
***********************

When I run this script I get this error:

>python shrink_bs_070226.py
Traceback (most recent call last):
File "shrink_bs_070226.py", line 25, in ?
from qt import *
File "/path/Linux/python/rh_linux/lib/python2.2/site-packages/
qt.py", line 46, in ?
import libsip
ImportError: libadamsqt.so: cannot open shared object file: No such
file or directory

What is important here that when I set this variable interactive in
python session, there is no problem with import.
>python
Python 2.2.3 (#1, Aug 8 2003, 08:44:02)
[GCC 3.2.3 20030502 (Red Hat Linux 3.2.3-13)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>>import os
>>>import shrink_bs_070226
Traceback (most recent call last):
File "<stdin>", line 1, in ?
File "shrink_bs_070226.py", line 25, in ?
from qt import *
ImportError: No module named qt
>>>os.environ["LD_LIBRARY_PATH"]='/path/Linux/rh_linux'
>>>import shrink_bs_070226

Could anybody explain me the logic here? Am I missing something?
Until Python 2.4 a failed import could leave some debris which would make
you think a second import did succeed.

Try
>>import os
os.environ["LD_LIBRARY_PATH"]='/path/Linux/rh_linux'
import shrink_bs_070226 # I expect that to fail
in a fresh interpreter to verify that what you see is an artifact of your
test method.

Peter
Feb 26 '07 #2
On Feb 26, 4:32 pm, Peter Otten <__pete...@web.dewrote:
boris.smir...@gmail.com wrote:
Hi there,
I have a problem with setting environment variable in my script that
uses qt library. For this library I have to define a path to tell the
script whre to find it.
I have a script called "shrink_bs_070226" that looks like this:
**********************************
import sys, re, glob, shutil
import os
os.environ["LD_LIBRARY_PATH"]='/path/Linux/rh_linux'
from qt import *
***********************
When I run this script I get this error:
python shrink_bs_070226.py
Traceback (most recent call last):
File "shrink_bs_070226.py", line 25, in ?
from qt import *
File "/path/Linux/python/rh_linux/lib/python2.2/site-packages/
qt.py", line 46, in ?
import libsip
ImportError: libadamsqt.so: cannot open shared object file: No such
file or directory
What is important here that when I set this variable interactive in
python session, there is no problem with import.
python
Python 2.2.3 (#1, Aug 8 2003, 08:44:02)
[GCC 3.2.3 20030502 (Red Hat Linux 3.2.3-13)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>import os
>>import shrink_bs_070226
Traceback (most recent call last):
File "<stdin>", line 1, in ?
File "shrink_bs_070226.py", line 25, in ?
from qt import *
ImportError: No module named qt
>>os.environ["LD_LIBRARY_PATH"]='/path/Linux/rh_linux'
>>import shrink_bs_070226
Could anybody explain me the logic here? Am I missing something?

Until Python 2.4 a failed import could leave some debris which would make
you think a second import did succeed.

Try
>import os
os.environ["LD_LIBRARY_PATH"]='/path/Linux/rh_linux'
import shrink_bs_070226 # I expect that to fail

in a fresh interpreter to verify that what you see is an artifact of your
test method.

Peter- Hide quoted text -

- Show quoted text -
You are right:
python
Python 2.2.3 (#1, Aug 8 2003, 08:44:02)
[GCC 3.2.3 20030502 (Red Hat Linux 3.2.3-13)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>import os
>>os.environ["LD_LIBRARY_PATH"]='/path/Linux/rh_linux'
>>import shrink_bs_070226
Traceback (most recent call last):
File "<stdin>", line 1, in ?
File "shrink_bs_070226.py", line 25, in ?
from qt import *
ImportError: No module named qt
>>>
OK then I have to reformulate my question. :)

In my script I have a line with

os.environ["LD_LIBRARY_PATH"]='/path/Linux/rh_linux'

but this line didn't work.
But when I set this environment variable in Linux shell it works. Here
is a small example.
python shrink_bs_070226.py
Traceback (most recent call last):
File "shrink_bs_070226.py", line 25, in ?
from qt import *
File "/path/Linux/python/rh_linux/lib/python2.2/site-packages/
qt.py", line 46, in ?
import libsip
ImportError: libadamsqt.so: cannot open shared object file: No such
file or directory
setenv LD_LIBRARY_PATH /path/Linux/rh_linux
python shrink_bs_070226.py
Starting Script "Shrinker" ....

Why it's not working in script with command

os.environ["LD_LIBRARY_PATH"]='/path/Linux/rh_linux'

but in shell it works?

I hope it's understandable. :)
Thanks,
boris

Feb 26 '07 #3
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

bo***********@gmail.com wrote:
>
OK then I have to reformulate my question. :)

In my script I have a line with

os.environ["LD_LIBRARY_PATH"]='/path/Linux/rh_linux'

but this line didn't work. But when I set this environment variable
in Linux shell it works. Here is a small example.
>python shrink_bs_070226.py
Traceback (most recent call last): File "shrink_bs_070226.py", line
25, in ? from qt import * File
"/path/Linux/python/rh_linux/lib/python2.2/site-packages/ qt.py",
line 46, in ? import libsip ImportError: libadamsqt.so: cannot open
shared object file: No such file or directory
ld-elf.so reads environment variables when it was loaded.
It never reads environment variables again!
That you setting environment in the process does not make link-editor
to re-read environment variable and take effect.

To resolve the problem, you can try to add the path to sys.path.

- --
Thinker Li - th*****@branda.to th********@gmail.com
http://heaven.branda.to/~thinker/GinGin_CGI.py
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.6 (FreeBSD)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org

iD8DBQFF4w6H1LDUVnWfY8gRAoI0AKCLikYsFU2N6aaOZFDd1L 2KY8DjqACg3QQn
KsEEcrvpw1CktEkVCKe/ojk=
=EQG6
-----END PGP SIGNATURE-----

Feb 26 '07 #4
On Feb 26, 5:44 pm, Thinker <thin...@branda.towrote:
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

boris.smir...@gmail.com wrote:
OK then I have to reformulate my question. :)
In my script I have a line with
os.environ["LD_LIBRARY_PATH"]='/path/Linux/rh_linux'
but this line didn't work. But when I set this environment variable
in Linux shell it works. Here is a small example.
python shrink_bs_070226.py
Traceback (most recent call last): File "shrink_bs_070226.py", line
25, in ? from qt import * File
"/path/Linux/python/rh_linux/lib/python2.2/site-packages/ qt.py",
line 46, in ? import libsip ImportError: libadamsqt.so: cannot open
shared object file: No such file or directory

ld-elf.so reads environment variables when it was loaded.
It never reads environment variables again!
That you setting environment in the process does not make link-editor
to re-read environment variable and take effect.

To resolve the problem, you can try to add the path to sys.path.

- --
Thinker Li - thin...@branda.to thinker...@gmail.comhttp://heaven.branda.to/~thinker/GinGin_CGI.py
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.6 (FreeBSD)
Comment: Using GnuPG with Mozilla -http://enigmail.mozdev.org

iD8DBQFF4w6H1LDUVnWfY8gRAoI0AKCLikYsFU2N6aaOZFDd1L 2KY8DjqACg3QQn
KsEEcrvpw1CktEkVCKe/ojk=
=EQG6
-----END PGP SIGNATURE------ Hide quoted text -

- Show quoted text -
Hi,
thanks for the tip, but it didn't help.

I used:
sys.path.append('/path/Linux/rh_linux')

and the problem still persists:

Traceback (most recent call last):
File "shrink_bs_070226.py", line 26, in ?
from qt import *
File "/path/Linux/python/rh_linux/lib/python2.2/site-packages/
qt.py", line 46, in ?
import libsip
ImportError: libadamsqt.so: cannot open shared object file: No such
file or directory

Is there another possibility of how to solve it just by adding some
lines in script?

Thanks
Boris

Feb 27 '07 #5
bo***********@gmail.com wrote:
Is there another possibility of how to solve it just by adding some
lines in script?
I think you have to wrap your script in a shell script

#!/bin/sh
export LD_LIBRARY_PATH=/path/Linux/rh_linux
python shrink_bs_070226.py

To avoid that you can have the python script invoke itself, e. g.:

#!/usr/bin/env python
import os
if os.environ.get("YADDA") != "whatever":
print "fix environment"
os.environ["YADDA"] = "whatever"
os.system("yadda.py")
raise SystemExit

print "YADDA is now %r" % os.environ["YADDA"]
print "do your real stuff"

Peter

Feb 27 '07 #6
On Feb 27, 9:31 am, Peter Otten <__pete...@web.dewrote:
boris.smir...@gmail.com wrote:
Is there another possibility of how to solve it just by adding some
lines in script?

I think you have to wrap your script in a shell script

#!/bin/sh
export LD_LIBRARY_PATH=/path/Linux/rh_linux
python shrink_bs_070226.py

To avoid that you can have the python script invoke itself, e. g.:

#!/usr/bin/env python
import os
if os.environ.get("YADDA") != "whatever":
print "fix environment"
os.environ["YADDA"] = "whatever"
os.system("yadda.py")
raise SystemExit

print "YADDA is now %r" % os.environ["YADDA"]
print "do your real stuff"

Peter
Thanks for the reply.

If I that good understood I did this:
**********************************
import sys, re, glob, shutil
import os
if os.environ["LD_LIBRARY_PATH"].count('/path/Linux/rh_linux') !=1:
os.environ["LD_LIBRARY_PATH"]=os.environ["LD_LIBRARY_PATH"]+':'+'/
path/Linux/rh_linux'
os.system("shrink_bs_070226.py")
raise SystemExit

from qt import *
***********************

Is that correct. If yes then it not works. If not then, what's wrong?
python shrink_bs_070226.py
Traceback (most recent call last):
File "./shrink_bs_070226.py", line 29, in ?
from qt import *
ImportError: No module named qt

Thanks
Boris

Feb 27 '07 #7
bo***********@gmail.com wrote:
On Feb 27, 9:31 am, Peter Otten <__pete...@web.dewrote:
>boris.smir...@gmail.com wrote:
Is there another possibility of how to solve it just by adding some
lines in script?

I think you have to wrap your script in a shell script

#!/bin/sh
export LD_LIBRARY_PATH=/path/Linux/rh_linux
python shrink_bs_070226.py

To avoid that you can have the python script invoke itself, e. g.:

#!/usr/bin/env python
import os
if os.environ.get("YADDA") != "whatever":
print "fix environment"
os.environ["YADDA"] = "whatever"
os.system("yadda.py")
raise SystemExit

print "YADDA is now %r" % os.environ["YADDA"]
print "do your real stuff"

Peter

Thanks for the reply.

If I that good understood I did this:
**********************************
import sys, re, glob, shutil
import os
if os.environ["LD_LIBRARY_PATH"].count('/path/Linux/rh_linux') !=1:
os.environ["LD_LIBRARY_PATH"]=os.environ["LD_LIBRARY_PATH"]+':'+'/
path/Linux/rh_linux'
os.system("shrink_bs_070226.py")
raise SystemExit

from qt import *
***********************

Is that correct. If yes then it not works. If not then, what's wrong?
I don't know. You are not quoting the actual code you are using (from qt
import * is definitely not in line 29, and the #!/path/to/your/python is
missing). Do you have more than one python version installed? then you may
have to put

#!/usr/bin/python2.2

or similar in the first line of your script.

Peter
Feb 27 '07 #8
On Feb 27, 10:33 am, Peter Otten <__pete...@web.dewrote:
boris.smir...@gmail.com wrote:
On Feb 27, 9:31 am, Peter Otten <__pete...@web.dewrote:
boris.smir...@gmail.com wrote:
Is there another possibility of how to solve it just by adding some
lines in script?
I think you have to wrap your script in a shell script
#!/bin/sh
export LD_LIBRARY_PATH=/path/Linux/rh_linux
python shrink_bs_070226.py
To avoid that you can have the python script invoke itself, e. g.:
#!/usr/bin/env python
import os
if os.environ.get("YADDA") != "whatever":
print "fix environment"
os.environ["YADDA"] = "whatever"
os.system("yadda.py")
raise SystemExit
print "YADDA is now %r" % os.environ["YADDA"]
print "do your real stuff"
Peter
Thanks for the reply.
If I that good understood I did this:
**********************************
import sys, re, glob, shutil
import os
if os.environ["LD_LIBRARY_PATH"].count('/path/Linux/rh_linux') !=1:
os.environ["LD_LIBRARY_PATH"]=os.environ["LD_LIBRARY_PATH"]+':'+'/
path/Linux/rh_linux'
os.system("shrink_bs_070226.py")
raise SystemExit
from qt import *
***********************
Is that correct. If yes then it not works. If not then, what's wrong?

I don't know. You are not quoting the actual code you are using (from qt
import * is definitely not in line 29, and the #!/path/to/your/python is
missing). Do you have more than one python version installed? then you may
have to put

#!/usr/bin/python2.2

or similar in the first line of your script.

Peter- Hide quoted text -

- Show quoted text -
Probably I understood it not correctly. What did you mean was to put
that code into my python script "shrink_bs_070226.py" and then calls
script itself?

So I took my script "shrink_bs_070226.py" and it starts with:
**********************************
#!/usr/bin/env python
import sys, re, glob, shutil
import os

then I put your code in that script

if os.environ["LD_LIBRARY_PATH"].count('/path/Linux/rh_linux') !=1:
os.environ["LD_LIBRARY_PATH"]=os.environ["LD_LIBRARY_PATH"]+':'+'/
path/Linux/rh_linux'
os.system("shrink_bs_070226.py")
raise SystemExit

and here continues my script:

from qt import *

......
***********************

Is it correct?

BTW: On lines 3:18 I have comments, script description and
modifications, therefore is "from qt import *" on the line 29

Feb 27 '07 #9
bo***********@gmail.com wrote:
Probably I understood it not correctly. What did you mean was to put
that code into my python script "shrink_bs_070226.py" and then calls
script itself?
Yes.
So I took my script "shrink_bs_070226.py" and it starts with:
**********************************
#!/usr/bin/env python
import sys, re, glob, shutil
import os

then I put your code in that script

if os.environ["LD_LIBRARY_PATH"].count('/path/Linux/rh_linux') !=1:
os.environ["LD_LIBRARY_PATH"]=os.environ["LD_LIBRARY_PATH"]+':'+'/
path/Linux/rh_linux'
os.system("shrink_bs_070226.py")
raise SystemExit

and here continues my script:

from qt import *

.....
***********************

Is it correct?
Yes.
BTW: On lines 3:18 I have comments, script description and
modifications, therefore is "from qt import *" on the line 29
The problem must be something else, then.

Peter

Feb 27 '07 #10

This thread has been closed and replies have been disabled. Please start a new discussion.

Similar topics

4
by: Yun Mao | last post by:
Hi, How to make changes to os.environ and os.path.chdir still effective after I run the script? Currently, the changes are only good within my script. I would like the shell who called python...
1
by: Erick Bodine | last post by:
I am trying to set a new environment variable on a W2k machine with only partial success. The name("SSID") and value("ASIM") show up correctly in the registry and when I go to "System...
0
by: Iván Cabria | last post by:
Hi, thanks to Jeff Epler for the answer. I have tried his suggestion and I have added two lines after the first line in the python script: import os os.environ = "/bin/bash"
0
by: Iván Cabria | last post by:
Hi again, I have checked that the shell is the bash shell by running again the script with a print statement. The first four lines are: #!/usr/local/bin/python import os os.environ =...
0
by: mahongquan | last post by:
when i install moinmoin in python 2.4,windows server2000, I found it has a bug,cgiHttpServer.py set environ,but the cgi python script can not get the environ variant,such as environ,so moin donot...
20
by: Joe | last post by:
When you run "python -i scriptname.py" after the script completes you left at the interactive command prompt. Is there a way to have this occur from a running program? In other words can I...
11
by: jim.eggleston | last post by:
Windows doesn't have a HOME environment variable, but it does have HOMEDRIVE and HOMEPATH. Could Windows versions of Python automatically populate os.environ with HOME, where HOME =...
2
by: eight02645999 | last post by:
hi i am writing a CGI to process some database transactions using the Sybase module. so in my CGI script, i have: .... import Sybase import cgitb; cgitb.enable(display=1 ,...
4
by: j_macaroni | last post by:
I know you can start php -a and go into interactive mode. This works well exept you have to keep putting <?php code here ; bla blah code ; Couple of problems with this. 1) Exits php when you...
1
by: CloudSolutions | last post by:
Introduction: For many beginners and individual users, requiring a credit card and email registration may pose a barrier when starting to use cloud servers. However, some cloud server providers now...
0
by: Faith0G | last post by:
I am starting a new it consulting business and it's been a while since I setup a new website. Is wordpress still the best web based software for hosting a 5 page website? The webpages will be...
0
by: taylorcarr | last post by:
A Canon printer is a smart device known for being advanced, efficient, and reliable. It is designed for home, office, and hybrid workspace use and can also be used for a variety of purposes. However,...
0
by: aa123db | last post by:
Variable and constants Use var or let for variables and const fror constants. Var foo ='bar'; Let foo ='bar';const baz ='bar'; Functions function $name$ ($parameters$) { } ...
0
by: ryjfgjl | last post by:
If we have dozens or hundreds of excel to import into the database, if we use the excel import function provided by database editors such as navicat, it will be extremely tedious and time-consuming...
0
by: ryjfgjl | last post by:
In our work, we often receive Excel tables with data in the same format. If we want to analyze these data, it can be difficult to analyze them because the data is spread across multiple Excel files...
0
by: emmanuelkatto | last post by:
Hi All, I am Emmanuel katto from Uganda. I want to ask what challenges you've faced while migrating a website to cloud. Please let me know. Thanks! Emmanuel
0
BarryA
by: BarryA | last post by:
What are the essential steps and strategies outlined in the Data Structures and Algorithms (DSA) roadmap for aspiring data scientists? How can individuals effectively utilize this roadmap to progress...
1
by: nemocccc | last post by:
hello, everyone, I want to develop a software for my android phone for daily needs, any suggestions?

By using Bytes.com and it's services, you agree to our Privacy Policy and Terms of Use.

To disable or enable advertisements and analytics tracking please visit the manage ads & tracking page.