我有一个python程序,我使用py2exe编译到Windows .exe。 使用Inno Setup,我创建了一个Windows安装程序。将脚本的工作文件夹添加到Windows的Python导入()路径的最佳方法是什么?
我的程序的性质是这样的,它使用使用__import__()
声明以后导入插件。这些插件位于'plugins'文件夹中,该文件夹本身位于我的程序的.exe文件所在位置的子文件夹中。
现在,有程序找到的插件,它早些时候曾somwhere下面的语句在我的文件的开头:
sys.path+= ['.']
然而,这都不尽如人意,当用户通过Windows启动程序'开始菜单,因为显然工作文件夹被设置为开始菜单(而不是.exe所在的位置)。所以'.'
没有解决我想要的。
我固定它通过改变语句下面,让__import__()
声明还看起来在.exe文件所在的文件夹中(因为argv[0]
是可执行文件的完整路径):
sys.path+= [os.path.dirname(sys.argv[0])]
但是,我不确定我是否选择了正确的解决方案。尤其是,因为我的程序是为了跨平台(Windows,OSX,Linux)和sys.argv documentation对argv [0]的说法,“它是否取决于操作系统是否是全路径”。
我应该不同解决这个问题,或者是我的方法好不好?
嗯,我不相信,因为'__file__'返回我的Windows。exe程序:'C:\ Program Files(x86)\ myprogram \ myprogram.exe \ core.pyc'。这将需要我去掉两层返回的路径('core.pyc'和'myprogram.exe'),这可能不是OSX,Linux或甚至从终端运行时的情况。 – Rabarberski 2012-02-10 11:27:26
然后最好的解决方案是配置文件由@SpencerRathbun提到 – Nilesh 2012-02-14 06:34:56