Python Enthink Canopy:os.environ变量来自哪里?
我有以下问题。我想使用matplotlib软件包动画来保存mp4视频文件。save函数依赖于生成mp4文件,即ffmpeg外部库。所以我通过Macports在MacOSX 10.8上安装了ffmpeg,它安装在Python Enthink Canopy:os.environ变量来自哪里?,python,environment-variables,osx-mountain-lion,enthought,canopy,Python,Environment Variables,Osx Mountain Lion,Enthought,Canopy,我有以下问题。我想使用matplotlib软件包动画来保存mp4视频文件。save函数依赖于生成mp4文件,即ffmpeg外部库。所以我通过Macports在MacOSX 10.8上安装了ffmpeg,它安装在/opt/local/bin中 但是现在,在canopy中运行脚本时,解释器(iPythonShell)无法看到ffmpeg。我将路径添加到.bash_配置文件中,可以在终端上运行该程序,但当我键入os.environ['path']时,shell的实际路径没有添加,并且/opt/loca
/opt/local/bin
中
但是现在,在canopy中运行脚本时,解释器(iPythonShell)无法看到ffmpeg。我将路径添加到.bash_配置文件中,可以在终端上运行该程序,但当我键入os.environ['path']
时,shell的实际路径没有添加,并且/opt/local/bin
也不存在。
如果尝试运行脚本,则会出现以下错误:
/Users/alejandrodelacallenegro/Library/Enthought/Canopy_64bit/User/lib/python2.7/site- packages/matplotlib/animation.py:695: UserWarning: MovieWriter ffmpeg unavailable
warnings.warn("MovieWriter %s unavailable" % writer)
有什么办法解决这个问题吗?我要做什么来改变python在启动时看到的环境变量?有人有同样的问题吗?
谢谢 这里的问题与热情无关;这是因为当您从Finder、LaunchDaemon等启动东西时,OSX不会运行bash,因此不会访问您的.bash\u配置文件。相反,它从launchd
运行它们
如果要添加一些环境变量以影响当前用户通过launchd
运行的任何内容,这很简单:
launchctl setenv PATH $PATH:/opt/local/bin
如果希望每次登录时都发生这种情况,如果创建一个文件~/.launchd.conf
,则该文件中的子命令将在每次启动launchd
时通过launchctl
运行(这是登录新用户会话的第一步)
如果您希望它是系统范围的,而不仅仅是针对您的用户,您可以sudo
launchctl和/或创建/编辑/etc/launchd.conf
。但是,除非您真的知道自己在做什么,否则您几乎肯定不想更改root
服务等使用的环境
如果有用的话:手动使用launchctl
,编辑~/.launchd.conf
,编辑/etc/launchd.conf
,大致相当于导出
,~/.bash\u配置文件
和/etc/profile
(当然它们影响的是launchd
,而不是bash
)
有关详细信息,请参见手册页,或者只需键入launchctl
即可启动交互式会话并使用内置帮助。(页面launchd(8)
和launchd.conf(5)
也有有用的信息。)
您还可以使用不推荐使用的environment.plist
文件来影响甚至不是由launchd
运行的东西,但是…这是不推荐使用的,并且除了在(更)旧的OS X版本中,它确实不会影响您所关心的任何东西
来自其他Unix系统的人经常会被这种情况所困扰。大多数文件管理器要求shell为它们运行程序;Finder.app(以及命令行工具open
、AppleScript环境等)要求launchd
执行此操作。另外,在大多数X11系统上,如果从文件管理器中查找进程树,它最终也是由用户shell启动的,而在OS X上,Finder.app是由launchd
启动的,后者是由系统范围的launchd
启动的;看不到炮弹
这也意味着其他特定于shell的东西,如更改资源限制或默认umask,不会影响在Mac上的shell之外启动的程序launchctl
再次是答案。非常清晰的解释,谢谢。本文链接到:@JonathanMarch:谢谢。但我不确定是否建议编辑/etc/launchd.conf
,除非您希望它影响所有用户。是否确实要修改根用户运行的服务所使用的路径?如果没有,只需edit~/.launchd.conf
而不是sudo edit/etc/launchd.conf
。根据launchd.conf
的手册页,实际上,$HOME/.launchd.conf
当前不受支持。