Creating a secondary site-packages directory (and loading packages from .pth files therein)

前端 未结 2 1370
轮回少年
轮回少年 2020-12-30 01:24

I would like to install some packages into a third-party site-packages directory (beyond the standard system locations). Is there any way to set this up such th

相关标签:
2条回答
  • 2020-12-30 01:49

    There was PEP 370 specifically addressing the creation of per-user site-packages directories, to deal with the situation where the user has no admin access to the system-wide site-packages.

    For example on Unix (including Mac OS), and assuming one is using Python 3.6, one can create the following directory and place .pth files inside there

    ~/.local/lib/python3.6/site-packages

    0 讨论(0)
  • 2020-12-30 02:08

    Take a look at the site module. It provides the function addsitedir which should do what you want.

    The easiest way to use this would be to create a file named sitecustomize.py or usercustomize.py and place it in a current PYTHONPATH directory (or any directory that ends up on sys.path) with the following contents:

    import site
    site.addsitedir('/usr/local/lib/python2.7')
    

    When Python is starting an attempt is made to import sitecustomize and then usercustomize, which is why this works. From the site documentation:

    After these path manipulations, an attempt is made to import a module named sitecustomize, which can perform arbitrary site-specific customizations. It is typically created by a system administrator in the site-packages directory. If this import fails with an ImportError exception, it is silently ignored.

    After this, an attempt is made to import a module named usercustomize, which can perform arbitrary user-specific customizations, if ENABLE_USER_SITE is true. This file is intended to be created in the user site-packages directory (see below), which is part of sys.path unless disabled by -s. An ImportError will be silently ignored.

    0 讨论(0)
提交回复
热议问题