当前位置: 首页 > 面试题库 >

什么用Python设置sys.path,何时设置?

周子平
2023-03-14
问题内容

当我跑步时

import sys 
print sys.path

在Mac上(Mac OS X 10.6.5,Python 2.6.1),我得到以下结果。

/Library/Python/2.6/site-packages/ply-3.3-py2.6.egg
...
/Library/Python/2.6/site-packages/ipython-0.10.1-py2.6.egg
/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python26.zip
/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6
/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/plat-darwin
/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/plat-mac
/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/plat-mac/lib-scriptpackages

/System/Library/Frameworks/Python.framework/Versions/2.6/Extras/lib/python
/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/lib-tk
/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/lib-old
/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/lib-dynload
/Library/Python/2.6/site-packages
/System/Library/Frameworks/Python.framework/Versions/2.6/Extras/lib/python/PyObjC
/System/Library/Frameworks/Python.framework/Versions/2.6/Extras/lib/python/wx-2.8-mac-unicode

它们分为5类。

  • /Library/Python/2.6/site-packages/*.egg
  • /Library/Python/2.6/site-packages
  • 框架/Python.framework/版本/2.6/lib/python2.6
  • 框架/Python.framework/版本/2.6/Extras/lib/python
  • 来自PYTHONPATH环境变量的PATH。

我可以使用代码添加更多路径

sys.path.insert(0, MORE_PATH)
  • 什么例程设置这些路径,何时设置?
  • 是否有些路径是在python源代码中构建的?
  • 插入’sys.path.insert’的路径是否有可能被忽略?我对此感到很好奇,就像使用mod_wsgi一样,我发现使用sys.path.insert找不到路径。

添加

根据迈克尔的回答,我查看了site.py,并获得了以下代码。

def addsitepackages(known_paths):
    """Add site-packages (and possibly site-python) to sys.path"""
    sitedirs = []
    seen = []

    for prefix in PREFIXES:
        if not prefix or prefix in seen:
            continue
        seen.append(prefix)

        if sys.platform in ('os2emx', 'riscos'):
            sitedirs.append(os.path.join(prefix, "Lib", "site-packages"))
        elif sys.platform == 'darwin' and prefix == sys.prefix:
            sitedirs.append(os.path.join("/Library/Python", sys.version[:3], "site-packages"))

我还认为,具有site.py的目录名称(对于我的Mac是/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6)应该内置到Python源代码中。


问题答案:

大多数内容都是在Python中设置的site.py,启动解释程序时会自动将其导入(除非您使用-S选项启动它)。初始化期间在解释器中很少设置路径(您可以通过使用来启动python来找出路径-S)。

另外,某些框架(例如我认为的Django)sys.path在启动时会进行修改以满足其要求。

site模块有一个很好的文档,带有注释的源代码,并且如果您通过来运行它,则会打印出一些信息python -m site



 类似资料:
  • 问题内容: 我是Android的新手,必须在两个PCB之间建立蓝牙连接。我在API指南中看到了一行代码,但我仍然不清楚它的含义。我想知道是否有人可以帮助我。 这是代码: 我不明白的是! 他们为什么在两者之间放一些东西。我也看过比。这些元素做什么? 问题答案: 这样就形成了通用集。当您声明时: 表示对象应仅包含类型的对象。通常建议使用泛型集合,因为您可以获得类型安全性的直接好处。 Java Coll

  • BIOS是英文Basic Input/Output System(基本输入/输出系统)的缩写,其程序储存在主板上的EPROM或Flash ROM内,作用是测试装在主板上的部件能否正常工作,并提供驱动程序接口,设定系统相关配备的组态。当你的系统配件与原CMOS参数不符合时,或CMOS参数遗失时,或系统不稳定时,就需要进入BIOS设定程序,以重新配置正确的系统组态。 进入AMI BIOS设定程序 1.

  • 我们所使用的计算机都是由一些硬件设备组成的,而这些硬件设备会由于用户的不同需要而在品牌、类型、性能上有很大差异。例如,对于硬盘,就可能存在容量大小和接口类型等方面的不同,而不同的硬件配置所对应的参数也不同,因此,我们在使用计算机之前,一定要确定它的硬件配置和参数,并将它们记录下来,存入计算机,以便计算机启动时能够读取这些设置,保证系统正常运行。 通常情况下,我们通过设置程序对硬件系统设置参数。由于

  • 本文向大家介绍设置字体时为什么建议设置替换字体?相关面试题,主要包含被问及设置字体时为什么建议设置替换字体?时的应答技巧和注意事项,需要的朋友参考一下 这是由于网站用户的浏览设备不同,可能并不支持或没有安装你所设置的字体。 这时候就会自动使用替换字体来对网页进行一个展示。 设置替换字体可以尽可能保证所有用户的浏览体验。

  • 引用《英特尔64和IA-32体系结构优化参考手册》§2.4.6“REP字符串增强”: 使用REP-string的性能特征可归因于两个部分:启动开销和数据传输吞吐量。 [...] 对于更大粒度数据传输的REP字符串,随着ECX值的增加,REP字符串的启动开销会逐步增加: > 短字符串(ECX 无剥离:延迟包括大约40个周期的启动成本,每64字节的数据增加4个周期 中间字符串长度:REP-MOVSW/

  • 问题内容: Python是否可以像这样在PHP中设置时区: 使用共享的虚拟主机时,我无法真正安装任何其他模块。 有任何想法吗? 问题答案: 要获取您列出的特定值: 有关指令的完整列表,请参见此处。请记住,strftime()函数将始终返回字符串,而不是整数或其他类型。