将脚本的工作文件夹添加到Windows上的Python导入()路径的最佳方
我有一个
python程序,我使用py2exe编译成
Windows .exe.
使用 Inno Setup,我创建了一个Windows安装程序. 我的程序的本质是它使用插件,后来使用__import __()语句导入.这些插件位于“plugins”文件夹中,该文件夹本身位于程序的.exe文件所在的子文件夹中. 现在,为了让程序找到插件,它先前在我的文件顶部有以下语句: sys.path+= ['.'] 但是,当用户通过Windows的开始菜单启动程序时,这不能很好地工作,因为显然工作文件夹设置为开始菜单(而不是.exe所在的位置).所以’.’没有解决我想要的问题. 我通过将语句更改为以下来修复它,以便__import __()语句也查找.exe所在的文件夹(因为argv [0]是可执行文件的完整路径): sys.path+= [os.path.dirname(sys.argv[0])] 但是,我不确定我是否选择了正确的解决方案.特别是,因为我的程序是跨平台的(Windows,OSX,Linux),sys.argv documentation说argv [0],“它是依赖于操作系统的,无论这是否是一个完整的路径名”. 我应该以不同的方式解决这个问题,还是我的方法可行 解决方法
在我编译的.exe Qt程序中,我使用的代码与你的代码非常相似:
def executable_path(): self_file = unicode(sys.argv[0],sys.getfilesystemencoding()) return os.path.realpath(os.path.dirname(self_file)) 我正在使用unicode,因为路径可能包含非ascii符号.
os.path.realpath解决了这个问题. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- 在Windows XP上的R中进行多核处理 – 通过doMC和foreach
- windows-server-2008 – Windows 2008:WinSXS目录不受控制
- windows与linux ping 显示的ip不一样
- 02、Windows Server 2003域账户管理(02)
- windows – 批量循环使用预定义列表或扩展集的所有文件,并忽
- 从.NET DLL调用VB6方法
- windows – x64调用约定(堆栈)和varargs
- Windows – Server 2008上的内存使用量不断增加,但未显示正
- mingw – 程序入口点_gxx_personality_v0无法在动态链接库中
- windows-server-2003 – 如何在不提示管理员密码的情况下从
- windows-server-2008 – 将组策略应用于远程桌面
- 使用Windows Azure共享网站托管根域(mydomain.co
- windows-server-2008 – 除了星期日之外,你能创建
- xaml – 在Windows Phone上设置ListView的GroupS
- windows – 无法添加对’Newtonsoft.Json’的引用
- 如何在Windows上安装GEOS for GeoDjango
- 用于支持Windows Vista / 7中的回声消除的API
- windows – SendInput()和非英文字符和键盘布局
- windows-phone-7 – 在WP7上的“后退”按钮上退出
- 有没有办法循环使用Windows 8应用程序并将其全部