PTH files: Abs paths not working as expected. Symlinks needed?

poseidon p.oseidon at datec.at
Wed Feb 15 07:42:06 EST 2017


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)?


>> https://docs.python.org/3.6/library/site.html suggests that PTH files
>> only work relative to the site-packages dir. But digging around in e.g.
>> StackOverflow I got the impression that absolute paths should work as
>> well. If so, what am I doing wrong?
>>
>> I'm on Arch Linux, Python 3.6.
>>
>> Kind regards
>> Paul
>>
>>
>





More information about the Python-list mailing list