2016-05-25 8 views
0

ユーザーが簡単に使用できるようにKMLファイルをドラッグアンドドロップするPythonスクリプトがあります。ドロップされたファイルはsys.arg [1]として取り込まれます。コマンドラインにmyScript.py Location.kmlと入力するとすべて正常に動作します。しかし、ファイルをドラッグアンドドロップするとエラーが発生し、no module named xlsxwriterと表示されます。 xlsxwriterはPythonスクリプトと同じフォルダにあり、別の名前のPackagesフォルダにあります。コマンドラインではなぜ機能するのですが、ドラッグアンドドロップしても機能しません。私は行方不明のトリックですか?Pythonファイルをドラッグアンドドロップしたときにモジュールが見つかりません

+0

あなたのスクリプトとxlswriterが内部にあるディレクトリがありますか? – ppalacios

+0

@PabloPaláciosはい、メインフォルダには、スクリプト、KMLファイル、およびパッケージという名前の別の3つの項目があります。 xlsxwriterはパッケージに含まれています。 –

+1

スクリプトのディレクトリは '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

答えて

0

erkysunのおかげでこの問題は解決しました。 eryksunのソリューションは完璧に動作し、私はそれが動作していない別の理由を見つけました。これは、ファイルをドラッグしてPythonスクリプトにドロップしたときに、os.getcwd()ファイルがどこにあっても実行されたため、C:\WINDOWS\system32が返されたためです。 os.getcwd()私はそれをos.path.abspath(os.path.dirname(__file__))に変更し、それがうまくいったところでこれに対処するために!

関連する問題