我有以下问题。我想用matplotlib包动画来保存mp4视频文件。save函数依赖于生成mp4文件,即ffmpeg外部库。所以我通过Macports在macosx10.8上安装了ffmpeg,它安装在/opt/local/bin
中。在
但是现在,在canopy中运行脚本时,解释器(ipythonshell)看不到ffmpeg。我将路径添加到我的.bash配置文件中,我可以在终端上运行该程序,但是当我键入os.environ['PATH']
时,我的shell的实际PATH
没有被添加,/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在启动时看到的环境变量?有人有同样的问题吗?
谢谢。在
这里的问题与enthough无关;它是当您从Finder、launchdaemon等启动东西时,OSX不运行bash,因此不能访问您的
.bash_profile
。相反,它从launchd
运行它们。在如果要添加一些环境变量来影响
launchd
为当前用户运行的任何内容,那么很容易:如果您希望每次登录时都发生这种情况,那么如果您创建一个文件
~/.launchd.conf
,则该文件中的子命令将在每次launchd
启动时通过launchctl
运行(这是登录新用户会话的第一步)。在如果您希望它是全系统的,而不仅仅是针对您的用户,您可以
sudo
launchctl和/或创建/编辑/etc/launchd.conf
。但是,您几乎肯定不想更改root
服务等使用的环境,除非您真正知道自己在做什么。在如果有帮助的话:手动使用}大致相当于}(当然,它们影响的是}/
launchctl
,编辑~/.launchd.conf
和编辑{export
、~/.bash_profile
和{launchd
,而不是{sh
)。在有关详细信息,请参见^{} 手册页,或者只需键入
launchctl
启动交互式会话并使用内置帮助。{cd21>还有有用的页面您还可以使用不推荐的
environment.plist
文件来影响launchd
不运行的东西,但是……这是不推荐的,它确实没有任何东西可以影响到您关心的,除了(非常)旧的osx版本来自其他Unix系统的人经常被这个问题所困扰。大多数文件管理器要求shell为他们运行程序;查找器.app(以及命令行工具
open
,以及AppleScript环境,等等)请launchd
来完成。另外,在大多数X11系统上,如果从文件管理器中查找进程树,它最终也是由用户shell启动的,而在OSX上,查找器.app由launchd
启动,它是由系统范围的launchd
启动的;看不到shell。在这也意味着其他shell特有的东西,如更改资源限制或默认umask,不会影响Mac上在shell之外启动的程序。
launchctl
又是答案。在相关问题 更多 >
编程相关推荐