PTH files: Abs paths not working as expected. Symlinks needed?
Wolfgang Maier
wolfgang.maier at biologie.uni-freiburg.de
Wed Feb 15 08:34:13 EST 2017
On 15.02.2017 13:42, poseidon wrote:
> On 15/02/17 12:16, Wolfgang Maier wrote:
>> On 15.02.2017 10:33, poseidon wrote:
>>> In /usr/lib/python3.6/site-packages I wrote a file tau4.pth. It contains
>>> the line
>>>
>>> /home/poseidon/tau4/swr/py3/src
>>>
>>> In /home/poseidon/tau4/swr/py3/src there's an __init__.py file, so it
>>> should be possible to write
>>>
>>> import tau4
>>>
>>> in my programs.
>>
>>
>> No, that's not what you should expect!
>> A path file contains paths to be added at interpreter startup to the
>> package/module search path stored in sys.path. That is, in your example,
>> if you put a file tau4.py or a tau4 directory with the __init__.py file
>> inside into /home/poseidon/tau4/swr/py3/src, *then* you could import
>> tau4.
>>
>>> It works, if I set a symlink to /home/poseidon/tau4/swr/py3/src in the
>>> site-packages dir:
>>>
>>> ln -s /home/poseidon/tau4/swr/py3/src
>>> /usr/lib/python3.6/site-packages/tau4
>>>
>>
>> Well this works because now Python finds (following the symlink) a tau4
>> package (i.e., a directory with that name and an __init__.py file
>> inside) in /usr/lib/python3.6/site-packages. The .pth file is not
>> involved in this at all.
>>
>
> Yes, removed it (symlink still there) and it still works. But then, what
> are pth files for? I'd just place a symlink to the package and am done
> with. The path doesn't seem to be needed in sys.path (where it would go
> if placed in a pth file). If I write
>
> from tau4 import datalogging
>
> that works, too. So no need for the path being in sys.path (i.e. in a
> pth file)?
>
I guess a major point of .pth files is that you only have one or a small
number of files with a clear purpose polluting the containing directory.
Of course, you could put symlinks to all your packages and modules into
site-packages, but what's the point of putting them somewhere else in
the first place? Also, you cannot create symlinks across devices, but
.pth files will work.
Best,
Wolfgang
More information about the Python-list
mailing list