Python的sys.path在哪里初始化?
UPD:Python在引用PYTHONPATH之前添加了一些路径:
>>> import sys
>>> from pprint import pprint as p
>>> p(sys.path)
['',
'C:\\Python25\\lib\\site-packages\\setuptools-0.6c9-py2.5.egg',
'C:\\Python25\\lib\\site-packages\\orbited-0.7.8-py2.5.egg',
'C:\\Python25\\lib\\site-packages\\morbid-0.8.6.1-py2.5.egg',
'C:\\Python25\\lib\\site-packages\\demjson-1.4-py2.5.egg',
'C:\\Python25\\lib\\site-packages\\stomper-0.2.2-py2.5.egg',
'C:\\Python25\\lib\\site-packages\\uuid-1.30-py2.5.egg',
'C:\\Python25\\lib\\site-packages\\stompservice-0.1.0-py2.5.egg',
'C:\\Python25\\lib\\site-packages\\cherrypy-3.0.1-py2.5.egg',
'C:\\Python25\\lib\\site-packages\\pyorbited-0.2.2-py2.5.egg',
'C:\\Python25\\lib\\site-packages\\flup-1.0.1-py2.5.egg',
'C:\\Python25\\lib\\site-packages\\wsgilog-0.1-py2.5.egg',
'c:\\testdir',
'C:\\Windows\\system32\\python25.zip',
'C:\\Python25\\DLLs',
'C:\\Python25\\lib',
'C:\\Python25\\lib\\plat-win',
'C:\\Python25\\lib\\lib-tk',
'C:\\Python25',
'C:\\Python25\\lib\\site-packages',
'C:\\Python25\\lib\\site-packages\\PIL',
'C:\\Python25\\lib\\site-packages\\win32',
'C:\\Python25\\lib\\site-packages\\win32\\lib',
'C:\\Python25\\lib\\site-packages\\Pythonwin']
Run Code Online (Sandbox Code Playgroud)
我的PYTHONPATH是:
PYTHONPATH=c:\testdir
Run Code Online (Sandbox Code Playgroud)
我想知道PYTHONPATH之前的那些路径来自哪里?
当我尝试hashlib在任何上下文中导入时,它会抛出此错误:
File "<stdin>", line 1, in <module>
File "build/bdist.macosx-10.11-intel/egg/hashlib.py", line 115, in <module>
"""
TypeError: 'frozenset' object is not callable
Run Code Online (Sandbox Code Playgroud)
知道如何解决这个问题吗?我只是通过打开终端,运行python然后键入来生成此错误import hashlib.
我在作为用户执行脚本期间安装了一些软件包.这些包是第一个用户包,所以python没有添加~/.local/lib/python2.7/site-packages到sys.path之前的脚本运行.我想导入这些已安装的软件包.但我不能,因为他们不在sys.path.
我怎么刷新sys.path?
我正在使用python 2.7.
除了预先存在的警告类别,用户还可以定义自己的警告类,例如在下面的代码中:
$ cat mwe.py
#!/usr/bin/env python3.5
import warnings
import pprint
class ObnoxiousWarning(UserWarning):
pass
for i in range(3):
print(i)
warnings.warn("I don't like this.", ObnoxiousWarning)
Run Code Online (Sandbox Code Playgroud)
调用Python时,该-W标志控制如何过滤警告.但是当我试图让它忽略我的新鲜警告类别时,我被告知过滤器被忽略了:
$ python3.5 -W ignore::ObnoxiousWarning ./mwe.py
Invalid -W option ignored: unknown warning category: 'ObnoxiousWarning'
0
./mwe.py:11: ObnoxiousWarning: I don't like this.
warnings.warn("I don't like this.", ObnoxiousWarning)
1
2
Run Code Online (Sandbox Code Playgroud)
如何使用命令行为自定义警告类别插入过滤器(与所有UserWarnings相反或基于警告消息进行过滤,我可以这样做)?
编辑2018-11-29:请参见问题22543:-W选项不能使用非标准类别
我最近在 Mac Os X (El Capitan) 上安装了“官方”Python 3.5。在此安装过程中,Python 将全局路径更改为包含/Library/Frameworks/Python.framework/Versions/3.5/bin(这可以使用例如 看到/usr/libexec/path_helper)。
但是,我无法理解这个“集合”是在哪里完成的(在 中/etc/paths既没有也没有/etc/paths.d)。我想从全局路径中删除此条目(不删除安装本身,因为它总是有用的)。
我在C中有一个应用程序,在某些时候我需要解决非线性优化问题.不幸的是,AFAIK在C中的资源非常有限(请让我知道其他情况).但是在Python中使用它很简单,例如scipy.optimize.minimize.
当我试图这样做时,我遇到了一些看似非常频繁的陷阱,例如Python.h找不到,模块没有加载,函数调用时出现分段错误等.
什么是快速简便的第一计时器链接这两个程序的方式?