何时/如何在/ usr / local中将site-packages从/ usr更改为python sys.prefix?

时间:2014-08-30 14:58:45

标签: python configuration path packages

如果我正确地关注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 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

谢谢!

1 个答案:

答案 0 :(得分:3)

创建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 docs:

  

在这些路径操作之后,尝试导入名为sitecustomize的模块,该模块可以执行任意特定于站点的自定义。它通常由site-packages目录中的系统管理员创建。如果此导入失败并显示ImportError异常,则会以静默方式忽略该异常。如果在没有输出流的情况下启动Python,就像Windows上的pythonw.exe(默认情况下用于启动IDLE)一样,sitecustomize的尝试输出将被忽略。除ImportError以外的任何异常都会导致过程无声且可能神秘失败。

     

在此之后,尝试导入名为usercustomize的模块,如果ENABLE_USER_SITE为真,则可以执行任意特定于用户的自定义。此文件旨在在用户site-packages目录中创建(见下文),该目录是sys.path的一部分,除非-s禁用。 ImportError将被默默忽略。

注意usercustomize.py的位置取决于site.USER_SITE的值,Linux for Python-2.7的值为~/.local/lib/python2.7/site-packages

注意sitecustomize.py中的sys.prefix也将由管理员放置在/usr/local中的网站包文件夹中。

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

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

    /usr/local/lib/python2.7/site-packages
  • PYTHONPATH设置为 prepend sys.path,这会将其添加到export PYTHONPATH=/usr/local/lib/python2.7/site-packages:$PYTHONPATH

    .bashrc

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

import java.util.concurrent.TimeUnit;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxDriver;

public class Pagesource
{
public static void main(String[] args)
{
    Pagesource.loadPage("http://photos.filmibeat.com/celebs/kajal-aggarwal/photos-c14-e13421-p592995.html");
}
public static void loadPage(String url)
{
    WebDriver driver = new FirefoxDriver();
    driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
    driver.get(url);

    String html = driver.getPageSource();

    System.out.println(html);

    driver.quit();      
}