相关疑难解决方法(0)

如何访问环境变量值?

我设置了一个我想在Python应用程序中访问的环境变量.我如何获得这个价值?

python environment-variables

1878
推荐指数
14
解决办法
161万
查看次数

在Python中读写环境变量?

可能重复:
如何在Python中设置环境变量

我的python脚本调用许多python函数和shell脚本.我想在Python(主调用函数)和所有子进程(包括shell脚本)中设置环境变量以查看环境变量集.

我需要设置一些像这样的环境变量:

DEBUSSY 1
FSDB 1
Run Code Online (Sandbox Code Playgroud)

1是一个数字,而不是一个字符串.另外,如何读取存储在环境变量中的值?(喜欢DEBUSSY/ FSDB在另一个python子脚本中.)

python environment-variables

155
推荐指数
2
解决办法
35万
查看次数

如何选择运行作业的GPU?

在多GPU计算机中,如何指定应运行CUDA作业的GPU?

作为一个例子,在安装CUDA时,我选择安装NVIDIA_CUDA-<#.#>_Samples然后运行几个nbody模拟实例,但它们都在一个GPU 0上运行; GPU 1完全空闲(使用监控watch -n 1 nvidia-dmi).检查CUDA_VISIBLE_DEVICES使用

echo $CUDA_VISIBLE_DEVICES
Run Code Online (Sandbox Code Playgroud)

我发现这没有设定.我尝试使用它

CUDA_VISIBLE_DEVICES=1
Run Code Online (Sandbox Code Playgroud)

然后nbody再次运行但它也进入了GPU 0.

我看了相关的问题,如何选择指定的GPU来运行CUDA程序?,但deviceQuery命令不在CUDA 8.0 bin目录中.除此之外$CUDA_VISIBLE_DEVICES$,我看到其他帖子引用环境变量,$CUDA_DEVICES但这些没有设置,我没有找到有关如何使用它的信息.

虽然与我的问题没有直接关系,但是使用nbody -device=1我能够让应用程序在GPU 1上运行但是使用nbody -numdevices=2不能在GPU 0和1上运行.

我在使用bash shell运行的系统上测试这个,在CentOS 6.8上,使用CUDA 8.0,2 GTX 1080 GPU和NVIDIA驱动程序367.44.

我知道在使用CUDA编写时,您可以管理和控制要使用的CUDA资源,但在运行已编译的CUDA可执行文件时,如何从命令行管理?

cuda nvidia

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

Python - 暂时修改当前进程的环境

我使用以下代码临时修改环境变量.

@contextmanager
def _setenv(**mapping):
    """``with`` context to temporarily modify the environment variables"""
    backup_values = {}
    backup_remove = set()
    for key, value in mapping.items():
        if key in os.environ:
            backup_values[key] = os.environ[key]
        else:
            backup_remove.add(key)
        os.environ[key] = value

    try:
        yield
    finally:
        # restore old environment
        for k, v in backup_values.items():
            os.environ[k] = v
        for k in backup_remove:
            del os.environ[k]
Run Code Online (Sandbox Code Playgroud)

with上下文主要用于测试用例.例如,

def test_myapp_respects_this_envvar():
    with _setenv(MYAPP_PLUGINS_DIR='testsandbox/plugins'):
        myapp.plugins.register()
        [...]
Run Code Online (Sandbox Code Playgroud)

我的问题:是否有简单/优雅的写作方式_setenv?我想过实际上做backup = os.environ.copy(),然后os.environ = backup..但我不知道是否会影响程序行为(例如:如果os.environ引用在Python解释器在其他地方).

python environment-variables

25
推荐指数
4
解决办法
2万
查看次数

更改当前进程环境的LD_LIBRARY_PATH

是否有可能改变当前流程的环境变量?

更具体地说,我想改变python脚本,LD_LIBRARY_PATH以便在导入依赖于某些模块的模块'x'时xyz.so,xyz.so取自LD_LIBRARY_PATH中的给定路径

有没有其他方法动态更改库加载的路径?

编辑:我想我需要提一下,我已经尝试过像os.environ这样的东西["LD_LIBRARY_PATH"] = mypath os.putenv('LD_LIBRARY_PATH',mypath)

但这些修改了env.对于生成的子进程,而不是当前进程,并且模块加载不考虑新的LD_LIBRARY_PATH

Edit2,所以问题是我们可以改变环境或其他东西,以便库加载器看到它并从那里加载吗?

python shared-libraries environment-variables

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

试图用语句和上下文管理器来理解python

我是新手,我只是想了解这个with陈述.我明白它应该替换try/ exceptblock.

现在假设我做了这样的事情:

try:
   name='rubicon'/2 # to raise an exception
except Exception as e:
   print "no not possible"
finally:
   print "Ok I caught you"
Run Code Online (Sandbox Code Playgroud)

如何用上下文管理器替换它?

python contextmanager

16
推荐指数
5
解决办法
9387
查看次数

Python打印环境变量内存地址

是否可以打印我的环境变量内存地址?

随着gdb-peda我有一个内存地址看起来像0xbffffcd6searchmem,我知道这是正确的方式.(0xbfff????)但是gdb使用其他一些环境变量移动了堆栈.

我想用我的python脚本来获取这个地址然后做我的技巧并包含我的shellcode.

我试过(使用Python):

print hex(id(os.environ["ENVVAR"]))
print memoryview(os.environ["ENVVAR"])

# output :
# 0xb7b205c0L
# <memory at 0xb7b4dd9c>
Run Code Online (Sandbox Code Playgroud)

使用Ruby:

puts (ENV['PATH'].object_id << 1).to_s(16)
# output :
# -4836c38c
Run Code Online (Sandbox Code Playgroud)

如果有人有想法,使用python或ruby.

ruby python memory environment-variables

10
推荐指数
1
解决办法
1638
查看次数

请求库的Python代理错误

我试图通过Python中的代理服务器访问Web.我正在使用请求库,我遇到了验证我的代理的问题,因为我使用的代理需要密码.

proxyDict = { 
          'http'  : 'username:mypassword@77.75.105.165', 
          'https' : 'username:mypassword@77.75.105.165'
        }
r = requests.get("http://www.google.com", proxies=proxyDict)
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

Traceback (most recent call last):
File "<pyshell#13>", line 1, in <module>
r = requests.get("http://www.google.com", proxies=proxyDict)
File "C:\Python27\lib\site-packages\requests\api.py", line 78, in get
:param url: URL for the new :class:`Request` object.
File "C:\Python27\lib\site-packages\requests\api.py", line 65, in request
"""Sends a POST request. Returns :class:`Response` object.
File "C:\Python27\lib\site-packages\requests\sessions.py", line 187, in request
def head(self, url, **kwargs):
File "C:\Python27\lib\site-packages\requests\models.py", line 407, in send
"""
File "C:\Python27\lib\site-packages\requests\packages\urllib3\poolmanager.py", line     127, in …
Run Code Online (Sandbox Code Playgroud)

python proxy http proxies python-requests

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

如何从python脚本中的.env文件设置环境变量?

在 Ubuntu bash shell 中,我可以使用命令行“source”(例如:)从 .env 文件设置环境变量source $OCSSWROOT/OCSSW_bash.env

source不是python中的函数。那么,如何从 python 中的 .env 文件设置环境变量?

'l2gen' 是 SeaDAS 的命令行程序,由 NASA 支持,用于处理海洋卫星数据。我可以在 bash shell 中运行它。现在,更多的程序需要用 python 脚本编码,'l2gen' 是程序之一。

但是需要在python脚本中重新设置环境变量。根据谷歌搜索结果,我喜欢在python中设置环境变量的一些方法。但缺少有关 .env 文件的信息。

在 Linux bash shell 中,我通过 vim 和 source 设置了环境变量:

    vim .profile
    export OCSSWROOT=[SeaDAS_install_dir]/ocssw (adding this in the profile 
                                                 file and then save/exit)
    source $OCSSWROOT/OCSSW_bash.env
Run Code Online (Sandbox Code Playgroud)

其中: SeaDAS_install_dir 是我安装软件 SeaDAS 的目录。

我尝试添加环境变量如下:

import subprocess
if __name__=='__main__':
     l2cmdtest = 'l2gen -h'
     new_env = os.environ.copy()
     new_env['OCSSWROOT'] = '/usr/local/seadas-7.5.3/ocssw'
     new_env['OCSSWROOT'] = 'OCSSWROOT/OCSSW_bash.env'
     eturnCodetest …
Run Code Online (Sandbox Code Playgroud)

python linux bash shell environment-variables

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

Python创建venv时设置环境变量

在我的项目中,我使用内置的 python 虚拟环境 ( python -m venv)。
为了设置环境变量,我将多个添加export VAR1=VALUE1venv/bin/activate.
显然,当我删除 venv 并创建一个新的 venv 时,例如使用新的 python 版本,我的所有 env 变量都会丢失。
那么,有没有办法保存它们呢?也许可以在创建 venv 时定义 env 变量?

python environment-variables virtualenv python-3.x python-venv

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