标签: sys

永久添加目录到PYTHONPATH?

每当我使用时sys.path.append,都会添加新目录.但是,一旦我关闭python,列表将恢复到之前的(默认?)值.如何永久添加目录PYTHONPATH

python windows save sys pythonpath

293
推荐指数
14
解决办法
52万
查看次数

为什么我们不应该在py脚本中使用sys.setdefaultencoding("utf-8")?

我见过很少的py脚本在脚本的顶部使用它.在什么情况下应该使用它?

import sys
reload(sys)
sys.setdefaultencoding("utf-8")
Run Code Online (Sandbox Code Playgroud)

python encoding utf-8 python-2.x sys

158
推荐指数
3
解决办法
18万
查看次数

156
推荐指数
3
解决办法
16万
查看次数

numpy数组的Python内存使用情况

我正在使用python来分析一些大文件,而且我遇到了内存问题,所以我一直在使用sys.getsizeof()来尝试跟踪使用情况,但是numpy数组的行为很奇怪.这是一个涉及我必须打开的反照率地图的例子:

>>> import numpy as np
>>> import struct
>>> from sys import getsizeof
>>> f = open('Albedo_map.assoc', 'rb')
>>> getsizeof(f)
144
>>> albedo = struct.unpack('%df' % (7200*3600), f.read(7200*3600*4))
>>> getsizeof(albedo)
207360056
>>> albedo = np.array(albedo).reshape(3600,7200)
>>> getsizeof(albedo)
80
Run Code Online (Sandbox Code Playgroud)

那么数据仍然存在,但是对象的大小,一个3600x7200像素的映射,从大约200 Mb变为80字节.我希望我的记忆问题已经结束,只是将所有内容转换为numpy数组,但我觉得这种行为,如果是真的,会在某种程度上违反信息理论或热力学的某些定律,或者其他什么,所以我是倾向于认为getsizeof()不适用于numpy数组.有任何想法吗?

python numpy sys

138
推荐指数
3
解决办法
8万
查看次数

Python的sys.path在哪里初始化?

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之前的那些路径来自哪里?

python path sys

99
推荐指数
2
解决办法
13万
查看次数

从Python中的脚本捕获stdout

假设有一个脚本做这样的事情:

# module writer.py
import sys

def write():
    sys.stdout.write("foobar")
Run Code Online (Sandbox Code Playgroud)

现在假设我想捕获write函数的输出并将其存储在变量中以供进一步处理.天真的解决方案是:

# module mymodule.py
from writer import write

out = write()
print out.upper()
Run Code Online (Sandbox Code Playgroud)

但这不起作用.我想出了另一个解决方案并且它有效,但是请告诉我是否有更好的方法来解决问题.谢谢

import sys
from cStringIO import StringIO

# setup the environment
backup = sys.stdout

# ####
sys.stdout = StringIO()     # capture output
write()
out = sys.stdout.getvalue() # release output
# ####

sys.stdout.close()  # close the stream 
sys.stdout = backup # restore original stdout

print out.upper()   # post processing
Run Code Online (Sandbox Code Playgroud)

python stdout sys

79
推荐指数
8
解决办法
8万
查看次数

堆栈和框架有什么区别?

在什么情况下我想用一个而不是另一个?

有什么区别:

>>> import inspect
>>> print(inspect.getouterframes(inspect.currentframe()))
[(<frame object at 0x8fc262c>, '<stdin>', 1, '<module>', None, None)]
Run Code Online (Sandbox Code Playgroud)

和:

>>> import traceback
>>> traceback.extract_stack()
[('<stdin>', 1, '<module>', None)]
Run Code Online (Sandbox Code Playgroud)

更新:

另一个:

>>> import sys
>>> print(sys._getframe().f_trace,sys._getframe().f_code)
(None, <code object <module> at 0x8682a88, file "<stdin>", line 1>)
Run Code Online (Sandbox Code Playgroud)

我不明白这里的细微差别:

  • 堆栈框架
  • 框架对象
  • 堆栈跟踪

更新2,问题问题后的一段时间,但非常相关

python sys inspect traceback

47
推荐指数
2
解决办法
1万
查看次数

从Python脚本获取当前目录的父级

我想从Python脚本中获取当前目录的父级.例如,我/home/kristina/desire-directory/scripts在这种情况下从欲望路径启动脚本/home/kristina/desire-directory

我知道sys.path[0]sys.但我不想解析sys.path[0]结果字符串.有没有其他方法可以在Python中获取当前目录的父级?

python sys sys.path

36
推荐指数
4
解决办法
7万
查看次数

在python中导入之前设置LD_LIBRARY_PATH

Python使用PYTHONPATH环境变量来确定它应该在哪些文件夹中查找模块.您可以通过修改来解决它sys.path,它可以很好地用于纯Python模块.但是当一个模块使用共享对象文件或静态库时,它会在LD_LIBRARY_PATH(在linux上)查找它们,但是根据我所知,这不能轻易改变并且是平台相关的.

这个问题的快速修复当然是设置环境变量或调用脚本LD_LIBRARY_PATH=. ./script.py,但是你必须为你打开的每个新shell再次设置它.此外,.so我的情况下的文件将始终与文件位于同一目录中.py,但很可能会移动到另一个绝对路径,所以我想每次调用脚本时自动设置它们.

如何编辑Python解释器在运行时独立查找库平台的路径?

编辑:

我已经尝试过os.environ['LD_LIBRARY_PATH'] = os.getcwd(),但无济于事.

python import environment-variables sys

34
推荐指数
3
解决办法
5万
查看次数

python:sys未定义

我有一段代码在Linux中运行,我现在正试图在Windows中运行它,我导入sys但是当我使用sys.exit()时.我收到一个错误,sys没有定义.这是我的代码的开头部分

try:
    import numpy as np
    import pyfits as pf
    import scipy.ndimage as nd
    import pylab as pl
    import os
    import heapq
    import sys
    from scipy.optimize import leastsq

except ImportError:
    print "Error: missing one of the libraries (numpy, pyfits, scipy, matplotlib)"
    sys.exit()
Run Code Online (Sandbox Code Playgroud)

为什么sys不工作?

python sys

32
推荐指数
2
解决办法
10万
查看次数