当站点包位于/usr/local时,何时/如何从/usr更改python sys.prefix?

当站点包位于/usr/local时,何时/如何从/usr更改python sys.prefix?,python,configuration,path,packages,Python,Configuration,Path,Packages,如果操作正确,我需要将站点包目录移动到/usr/lib/python2.7,或者将sys.prefix更改为/usr/local 前者似乎是错误的。对于后者,我可以选择直接编辑site.py或重新安装python。编辑site.py是否被认为太黑了,或者这是一件标准的事情?(埃塔:我认为这是一件标准的事情,因为这就是它的目的。我想我真的在问,在这种情况下,这是否是最好的选择。) 还是我忽略了另一个选择 /usr/lib vs/usr/local/lib: auto@virgo:/etc/apac

如果操作正确,我需要将站点包目录移动到/usr/lib/python2.7,或者将sys.prefix更改为/usr/local

前者似乎是错误的。对于后者,我可以选择直接编辑site.py或重新安装python。编辑site.py是否被认为太黑了,或者这是一件标准的事情?(埃塔:我认为这是一件标准的事情,因为这就是它的目的。我想我真的在问,在这种情况下,这是否是最好的选择。)

还是我忽略了另一个选择

/usr/lib vs/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.py
usercustomize.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
站点包的路径

从文档:

在这些路径操作之后,将尝试导入名为
sitecustomize
的模块,该模块可以执行任意特定于站点的自定义。它通常由系统管理员在site packages目录中创建。如果此导入失败并出现
ImportError
异常,则会自动忽略它。如果启动Python时没有可用的输出流,如Windows上的
pythonw.exe
(默认情况下用于启动空闲),则将忽略尝试从
sitecustomize
输出的内容。除ImportError之外的任何异常都会导致进程的无声故障,可能是神秘故障

在此之后,尝试导入名为
usercustomize
的模块,如果
ENABLE\u user\u SITE
为true,则该模块可以执行任意用户特定的自定义。该文件将在用户站点软件包目录(见下文)中创建,该目录是
sys.path
的一部分,除非被
-s
禁用。导入错误将被静默忽略

注意:用户自定义.py的位置取决于
site.USER\u site
的值,它在Linux for Python-2.7上是
~/.local/lib/python2.7/站点包

  export PYTHONUSERBASE=/usr/local
注意:管理员也会将
sitecustomize.py
放在
sys.prefix
中的site packages文件夹中

其他选项是设置环境变量:

$ PYTHONPATH=/usr/local/lib/python2.7/site-packages python
  • 设置为
    /usr/local
    ,这将用户的基本Python目录的位置从
    ~/.local
    切换到您设置的任何位置注意:这将禁用安装到
    ~/.local/lib/python2.7/site软件包中的软件包

      export PYTHONUSERBASE=/usr/local
    
  • 设置为prepend
    /usr/local/lib/python2.7/site packages
    ,将其添加到
    sys.path

      export PYTHONPATH=/usr/local/lib/python2.7/site-packages:$PYTHONPATH
    
可以在
.bashrc
.bash\u profile
设置中导出环境变量,将其添加到
/etc/Environment
以使其成为系统范围内的变量,也可以在Python解释器调用之前简单地使用所需的环境变量:

$ PYTHONPATH=/usr/local/lib/python2.7/site-packages python

为什么导入操作系统?