【发布时间】:2016-05-25 23:41:03
【问题描述】:
我有一个 Python 脚本,用户可以将 KML 文件拖放到该脚本中以方便使用。它将删除的文件作为 sys.arg[1]。当以myScript.py Location.kml 身份输入命令行时,一切正常。但是当我拖放文件时,会抛出一个错误,说no module named xlsxwriter。 xlsxwriter 与我的 Python 脚本位于另一个名为 Packages 的文件夹中。为什么它适用于命令行而不是拖放时?我缺少什么技巧吗?
【问题讨论】:
-
所以你有一个你的脚本和一个里面有 xlswriter 的目录?
-
@PabloPalácios 是的,主文件夹包含三个项目:脚本、KML 文件和另一个名为 Packages 的文件夹。 xlsxwriter 在包中。
-
脚本的目录应该是
sys.path[0],所以你应该能够导入位于那里的包。Packages子目录不应该在sys.path中,至少默认情况下不应该。可以手动添加:script_dir = os.path.abspath(os.path.dirname(__file__));package_dir = os.path.join(script_dir, 'Packages');sys.path.insert(1, package_dir)。 -
@eryksun 谢谢你的工作!这也是因为我使用
sys.path.append(os.getcwd()+'/Packages')设置模块的路径,而它应该使用sys.path.append(os.path.abspath(os.path.dirname(__file__))+'/Packages')设置 -
我建议在索引 1 处插入而不是追加。这使您的私有包优先于标准库。
标签: python windows drag-and-drop xlsxwriter