本问题已经有最佳答案,请猛点这里访问。

如果自定义模块不在sys.path变量的任何目录中,下面的代码允许我动态地标识和加载该模块。

import sys

sys.path.append("/lib")

但是,这给了我一个错误

import subprocess

x = subprocess.Popen(["export","PYTHONPATH=/lib"], stdout=subprocess.PIPE)

不仅如此,甚至简单的linux/unix变量声明设置也会在subprocess.popen()中失败。

import subprocess

x = subprocess.Popen("x=y", stdout=subprocess.PIPE)

我想检查子进程,因为我试图通过os.system()、os.popen()等设置pythonpath,但变量没有设置(可能是在子进程shell中设置的)。

export是一个内置的shell命令,而不是程序。无论如何,在子进程中设置它不会影响当前的Python进程。你需要os.environdocs.python.org/3/library/os.html吗?highlight=envir on os.envir‌&8203;打开。

os.environ["pythonpath"]="/dir"和subprocess.call(["export pythonpath=/dir"],shell=true)这两个代码都帮助我设置环境变量pythonpath,但即使设置了它,我也无法加载该目录下存在的模块,也看不到将此目录项注入sys.path变量中。

subprocess.call(["export PYTHONPATH=/dir"], shell=True)只会影响一个子进程——环境变量不是全局的,它们不是共享的,它们是从父进程复制到子进程的。设置os.environ["PYTHONPATH"] ="/dir"将不会设置当前进程的sys.path,因为pythonpath是在进程启动时读取的,而不是稍后读取的。

这里发生了一些事情,可能会让你有点困惑。一件事是,给popen的任何指令都将在子进程中执行,不会影响主进程。您只能通过管道或从中检索结果。

首先对第二个用例进行注释,其中使用字符串作为参数。从文档中可以看到:

class subprocess.Popen(args, bufsize=-1, executable=None, stdin=None,

stdout=None, stderr=None, preexec_fn=None, close_fds=True,

shell=False, cwd=None, env=None, universal_newlines=False,

startupinfo=None, creationflags=0, restore_signals=True,

start_new_session=False, pass_fds=())

args should be a sequence of program arguments or else a single

string. By default, the program to execute is the first item in args

if args is a sequence. If args is a string, the interpretation is

platform-dependent and described below. See the shell and executable

arguments for additional differences from the default behavior. Unless

otherwise stated, it is recommended to pass args as a sequence.

On POSIX, if args is a string, the string is interpreted as the name

or path of the program to execute. However, this can only be done if

not passing arguments to the program.

因此,在第二种情况下,您试图执行一个文件或程序x=y,但它不起作用。

即使您像在第一个用例中那样使用list,您也必须知道,这并不等同于向bash shell传递代码。如果需要,可以使用shell=true作为关键字参数,但这还有文档指出的其他问题。但您的代码将以shell=true执行。

如果您的唯一目的是设置环境变量,那么您应该考虑使用将环境变量映射到值的os.environ变量(如@cdarke所示)。

试试这个:

>>> subprocess.call(["export foo=bar && echo foo=$foo"], shell=True)

foo=bar

0

>>>

python subprocess popen 无法打开_使用subprocess.Popen()在python脚本中设置PYTHONPATH失败...相关推荐

  1. 安装好了python环境后如何打开_教你如何安装Python环境

    欢迎同学们来到Python编程世界.人生苦短,Python是岸. 01 初见Python Python编程语言是荷兰人Guido van Rossum在1990年代开发出来的. Gudio拥数学和计算 ...

  2. python调用第三方软件发信代码_【IT专家】python调用第三方邮件接口

    本文由我司收集整编,推荐下载,如有疑问,请与我司联系 python 调用第三方邮件接口 2017/08/10 1 单线程发送 #!/usr/bin/env python# -*- coding: UT ...

  3. python公开课乐博学院_当我学完 Python ,我学会了些什么【乐搏TestPRO】

    本文是本人学完Python后的一遍回顾,加深理解顺便留作手册以备查阅. 学习Python的这几天来,觉得Python还是比较简单,容易上手的,就基本语法而言,但是有些高级特性掌握起来还是有些难度,需要 ...

  4. python运行完不能显示图_【已解决】Python中通过Image的open之后,去show结果打不开bmp图片,无法正常显示图片...

    [问题] 在windows的cmd命令行下,使用Python的PIL库打开并显示一个jpg图片:openedImg = Image.open(saveToFile); print "open ...

  5. python中年大叔学编程_中年大叔学编程-Python简单操作文件

    原标题:中年大叔学编程-Python简单操作文件 在计算机中,经常打交道的就是各种文档,用得比较多的软件就是office和记事本来操作文件,那么我们试试用Python来简单读写文件. Open函数的用 ...

  6. python 结构体数组 定义_一篇文章弄懂Python中所有数组数据类型

    前言 数组类型是各种编程语言中基本的数组结构了,本文来盘点下Python中各种"数组"类型的实现. list tuple array.array str bytes bytearr ...

  7. 用python批量下载网络图片大全_实战干货:用 Python 批量下载百度图片!

    为了做一个图像分类的小项目,需要制作自己的数据集.要想制作数据集,就得从网上下载大量的图片,再统一处理. 这时,一张张的保存下载,就显得很繁琐.那么,有没有一种方法可以把搜索到的图片直接下载到本地电脑 ...

  8. python手机编译器可以干什么_世界上最好的Python编辑器是什么?

    在这种情况下,你需要使用一个 IDE(集成开发环境)或专用的代码编辑器.由于 Python 是最流行的编程语言之一,IDE 的选择也非常多.那么问题来了:「究竟什么样的 IDE 最适合 Python? ...

  9. python迭代器与生成器答案_史上最全 Python 迭代器与生成器

    原标题:史上最全 Python 迭代器与生成器 作者:浪子燕青 链接:http://www.langzi.fun/迭代器与生成器.html 迭代器与可迭代对象 概念 迭代器:是访问数据集合内元素的一种 ...

最新文章

  1. linux如何右键新建文件夹,在Ubuntu 18.04右键菜单中增加新文档(New Document)及其他类型选项...
  2. 高等数学、线性代数、概率论数理统计书籍推荐
  3. c语言返回一个数的任意倍数,几道基础C语言题
  4. 基于Walle的多渠道快速打包自动脚本
  5. 找出现实中符合这三种模式的互联网产品
  6. excel查标准正态分布_终于搞清楚正态分布、指数分布到底是个啥了
  7. 怎么将py文件转成dll_怎么将多个PPT同时转成PDF?
  8. PHP面试常考内容之面向对象(3)
  9. iOS 处理键盘遮挡TextField、TextView问题
  10. python prt_Python中的self
  11. 关于注册规划师的点点碎碎
  12. 空调万能手机遥控器android版,手机空调万能遥控器
  13. html 设置两个标签的相对距离_如何准确计算一div相对另一div的相对距离?
  14. 走近夜间灯光——教你平均灯光指数(ANLI)如何得到(超详细)
  15. dos命令如何查看计算机信息,电脑DOS命令查看进程详细信息方法图解
  16. 手把手教你实现echarts3的折线图下钻drilldown功能系列篇二
  17. ma5671怎么设置_电信/联通/移动,更换华为MA5671光猫详细教程
  18. 【Hibernate步步为营】--详解基本映射
  19. RabbitMQ:使用Docker构建RabbitMQ高可用负载均衡集群
  20. 给bootstrap-treeview增加点击事件,单击菜单也能展开和折叠

热门文章

  1. C#通过工厂模式,我把一大堆if干掉了
  2. 通过 .NET NativeAOT 实现用户体验升级
  3. 使用 dotnet-monitor 分析.NET 应用程序
  4. GraphQL:面对复杂类型
  5. BenchmarkDotNet v0.12x新增功能
  6. 开源.Net Standard版华为物联网北向接口SDK
  7. 程序员修神之路--打通Docker镜像发布容器运行流程
  8. asp.net core 使用 signalR(一)
  9. 依赖注入在 dotnet core 中实现与使用:1 基本概念
  10. Visual Studio2017 远程调试 Remote Debugger