- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在理解 official tutorial 中的这一段时遇到一些困难:
After initialization, Python programs can modify
sys.path
. The directory containing the script being run is placed at the beginning of the search path, ahead of the standard library path. This means that scripts in that directory will be loaded instead of modules of the same name in the library directory. This is an error unless the replacement is intended. See section Standard Modules for more information.
假设我有以下模块,名为 demo.py
:
if __name__ == '__main__':
import sys
print sys.path
当前目录下还有一个名为sys.py
的模块,只包含一个pass
。我想使用这个模块来“隐藏”标准模块。
在终端,我执行并得到了
sunqingyaos-MacBook-Air:Documents sunqingyao$ python demo.py
['/Users/sunqingyao/Documents', '/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python27.zip', '/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7', '/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/plat-darwin', '/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/plat-mac', '/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/plat-mac/lib-scriptpackages', '/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python', '/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-tk', '/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-old', '/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-dynload', '/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/PyObjC', '/Library/Python/2.7/site-packages']
所以我的问题是:sys.path
何时修改?
import sys
之前对其进行了修改,则应导入 sys.py
而不是标准模块。print sys.path
后对其进行修改,'/Users/sunqingyao/Documents'
不应出现在 中>sys.path
.而且奇怪的是,修改发生在 import sys
和 print sys.path
的执行之间。
最佳答案
sys
是一个内置模块,它是解释器的一部分,不能被屏蔽,因为它在解释器启动时就已经加载了。
这是因为 sys.modules
是正在加载的模块的核心注册表,而 sys.modules['sys']
指向其自身。任何import sys
语句都会在需要搜索模块路径之前找到sys.modules['sys']
。
sys
不是唯一的内置模块,尽管它是唯一自动加载的模块。请参阅sys.builtin_module_names
tuple用于编译到 Python 二进制文件中的其他模块。
这是 site
module 的责任更新sys.path
;它作为 Python 引导过程的一部分加载,除非您使用 -S
command line switch .
关于python - sys.path什么时候修改?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38411636/
我正在编写一个 python 程序,它将所有输入都大写(替代非工作 tr '[:lowers:]' '[:upper:]')。语言环境是 ru_RU.UTF-8,我使用 PYTHONIOENCODIN
我收到错误;MVC Microsoft JScript 运行时错误:Sys.ArgumentTypeException:“Sys._Application”类型的对象无法转换为“Sys._Applic
尝试使用 IDLE 在 Python 3.7.4 版本中安装 sys 包时,出现以下错误: 输入:C:\Users\UserName\Downloads>pip install sys 输出: 采集系
我对 Python 还很陌生,所以我还在学习这门语言。我遇到的一件事是重新分配 sys.stdout 以更改打印的默认输出。所以我写了这个作为测试: import sys sys.stdout = o
我应该选择 sys.exc_info()在 sys.last_value和 friend (sys.last_type,sys.last_traceback)? 最佳答案 查看sys.last_val
我的 shell 脚本中出现奇怪的错误。使用这个: $find /sys/class/ -name temp -exec cat '{}' ';' 我得到输出 77000 find: `/sys/ke
我只想从 sys 库导入 argv 和可执行函数。 所以我使用 from 和 import 来指定这些函数,如下所示:- from sys import argv from sys import ex
我想找到调用我的程序的命令行参数,即 sys.argv,但我想在 Python 使 sys.argv 可用之前执行此操作.这是因为我在 usercustomize.py 中运行代码,该代码由 site
sys和os.sys在python中有什么区别?我见过很多项目在导入os时使用sys。当我尝试 dir(sys) 和 dir(os.sys) 时,它们的功能相同,输出也相同。 我经常看到像这样使用 s
create table T ( ID number, COL1 SYS.XMLTYPE )XMLType COLUMN COL1 STORE AS CLOB; select obj#,col
下面的 SQL 似乎可以工作,但我想知道是否有更好的方法来编写它。我正在尝试选择具有特定名称的所有 View 和表。如果找到匹配项,则应该只有一个返回值。 SELECT DISTINCT name F
在我的客户端(使用 LWJGL)中,我使用以下代码: private static long getTime() { return (Sys.getTime() * 1000) / Sys.g
我的老板让我看一些旧代码,其中所有内容都被发送到 stderr。我知道 stderr 应该有警告和错误,但他们什么时候才真正应该转到 stdout? 此程序是一项服务。它发送到 stderr 的一些消
使用 importlib,“Meta Path Finder”(通过遍历 sys.meta_path 找到)和“Path Entry Finder”(通过遍历 sys.path_hooks 找到)有什
我正在运行这个命令来安装 os_sys 包: pip3 install os_sys 但收到此错误: ERROR: os-sys has an invalid wheel, could not rea
如果我查询sys.dm_database_encryption_keys,它返回的encryption_state为3(加密),percent_complete 0。如果我查询 sys.databas
有人可以向我解释一下这些不同的环境函数具体有什么作用吗?即哪个返回什么帧?阅读文档后我完全困惑了(http://stat.ethz.ch/R-manual/R-patched/library/base
查看其他 stackoverflow 帖子后,我似乎无法解决这个重定向问题。我想做的是抑制 stdout 和 stderr,然后在捕获错误后恢复它们。抑制效果很好,但恢复它们只成功了一半。 如果我尝试
这个问题在这里已经有了答案: Understanding slicing (38 个答案) 关闭 3 个月前。 我写了这段代码: #!/usr/bin/env python import sys i
我正在创建一个名为 Qt ( Github link ) 的模块,我在其中为另一个模块起别名(例如 PyQt4),这样当我导入 Qt 我实际上正在导入 PyQt4: from Qt import Qt
我是一名优秀的程序员,十分优秀!