[Python-Dev] Question about sys.path and sys.argv and how packaging (may) affects default values

Michael Felt aixtools at gmail.com
Wed Mar 2 06:50:15 EST 2016


Hello all,

1) There are many lists to choose from - if this is the wrong one for 
questions about packaging - please forgive me, and point me in the right 
direction.

2) Normally, I have just packaged python, and then moved on. However, 
recently I have been asked to help with packaging an 'easier to install' 
python by people using cloud-init, and more recently people wanting to 
use salt-stack (on AIX).

FYI: I have been posting about my complete failure to build 2.7.11 ( 
http://bugs.python.org/issue26466) - so, what I am testing is based on 
2.7.10 - which built easily for me.

Going through the 'base documentation' I saw a reference to both 
sys.argv and sys.path. atm, I am looking for an easy way to get the 
program name (e.g., /opt/bin/python, versus ./python).
I have my reasons (basically, looking for a compiled-in library search 
path to help with http://bugs.python.org/issue26439)

Looking on two platforms (AIX, my build, and debian for power) I am 
surprised that sys.argv is empty in both cases, and sys.path returns 
/opt/lib/python27.zip with AIX, but not with debian.

root at x064:[/data/prj/aixtools/python/python-2.7.10]/opt/bin/python
Python 2.7.10 (default, Nov  3 2015, 14:36:51) [C] on aix5
Type "help", "copyright", "credits" or "license" for more information.
 >>> import sys
 >>> sys.argv
['']
 >>> sys.path
['', '/opt/lib/python27.zip', '/opt/lib/python2.7', 
'/opt/lib/python2.7/plat-aix5', '/opt/lib/python2.7/lib-tk', 
'/opt/lib/python2.7/lib-old', '/opt/lib/python2.7/lib-dynload', 
'/opt/lib/python2.7/site-packages']

michael at ipv4:~$ python
Python 2.7.9 (default, Mar  1 2015, 13:01:00)
[GCC 4.9.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
 >>> import sys
 >>> sys.argv
['']
 >>> sys.path
['', '/usr/lib/python2.7', '/usr/lib/python2.7/plat-powerpc-linux-gnu', 
'/usr/lib/python2.7/lib-tk', '/usr/lib/python2.7/lib-old', 
'/usr/lib/python2.7/lib-dynload', 
'/usr/local/lib/python2.7/dist-packages', 
'/usr/lib/python2.7/dist-packages', 
'/usr/lib/python2.7/dist-packages/PILcompat', 
'/usr/lib/python2.7/dist-packages/gtk-2.0', '/usr/lib/pymodules/python2.7']

And I guess I would be interested in getting 
'/opt/lib/python2.7/dist-packages' in there as well (or learn a way to 
later add it for pre-compiled packages such as cloud-init AND that those 
would also look 'first' in /opt/lib/python2.7/dist-packages/cloud-init 
for modules added to support cloud-init - should I so choose (mainly in 
case of compatibility issues between say cloud-init and salt-stack that 
have common modules BUT may have conflicts) - Hopefully never needed for 
that reason, but it might also simplify packaging applications that 
depend on python.

Many thanks for your time and pointers into the documentation, It is a 
bit daunting :)

Michael


More information about the Python-Dev mailing list