如果我正确遵循https://docs.python.org/2/library/site.html,则需要将site-packages目录移至/usr/lib/python2.7或将sys.prefix更改为/usr/local。

前者似乎是错误的。对于后者,我可以找到的选项是直接编辑site.py或重新安装python。编辑site.py是否被认为太hacky了,或者这是一种标准的做法? (ETA:我认为这是一个标准的事情,因为那是它的目的。猜猜我真的是在问这是否是最好的选择。)

还是我忽略了另一个选择?

/usr/lib与/usr/local/lib:

auto@virgo:/etc/apache2$ ls -ld /usr/lib/python2.7/site-packages
ls: cannot access /usr/lib/python2.7/site-packages: No such file or directory

auto@virgo:/etc/apache2$ ls -ld /usr/local/lib/python2.7/site-packages
drwxrwsr-x 2 root staff 4096 Aug 29  2013 /usr/local/lib/python2.7/site-packages

python sys.prefix:
auto@virgo:~$ python
Python 2.7.3 (default, Apr 10 2013, 05:46:21)
[GCC 4.6.3] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import sys
>>> print sys.prefix
/usr

谢谢!

最佳答案

创建sitecustomize.pyusercustomize.py并追加到site.PREFIXES

import site
SITEPKGS = '/usr/local/lib/python2.7/site-packages'
site.addsitedir(SITEPKGS)
site.PREFIXES += ['/usr/local']
假设/usr/local/lib/python2.7/site-packages/usr/local网站包的路径。
site文档:

注意:usercustomize.py的位置取决于site.USER_SITE的值,在Linux-Python-2.7上,~/.local/lib/python2.7/site-packagessitecustomize.py
注意:管理员也将sys.prefix放置在PYTHONUSERBASE中的站点包文件夹中。
其他选项是设置环境变量:
  • /usr/local 设置为~/.local,这会将用户基本Python目录的位置从~/.local/lib/python2.7/site-packages切换到您设置的位置。 注意:这将禁用您安装到PYTHONPATH中的软件包。
      export PYTHONUSERBASE=/usr/local
    
  • /usr/local/lib/python2.7/site-packages 设置为在sys.path之前添加,然后将其添加到.bashrc中。
      export PYTHONPATH=/usr/local/lib/python2.7/site-packages:$PYTHONPATH
    

  • 可以在.bash_profile/etc/environment设置中导出环境变量,将其添加到ojit_code中以使其在整个系统范围内,或者您可以在Python解释器调用之前简单地添加所需的环境变量:
    $ PYTHONPATH=/usr/local/lib/python2.7/site-packages python
    

    关于python - 当站点包位于/usr/local中时/何时/如何从/usr中更改python sys.prefix?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25583680/

    10-14 17:24