最近、コンピューター (Windows 7、32 ビット) に Python 2.7 に加えて Python 3.3 をインストールしました。Python 3.3 では、.py ファイルの先頭に「シバン行」を追加できるため、実行時に使用する Python バージョンを選択できます。Pyscripter はこの「シバン行」を認識しないため、.py ファイルの最初の行を読み取り、対応する引数を使用して Pyscripter で開くプログラムを作成しました。次のようになります。
#!/usr/bin/env python2.7
from sys import argv
from os import system
if len(argv)>1:
file = open(argv[1])
shebang=file.readline()
if shebang.split()[1] in {'python2','python2.7'}:
system(r'C:\Python27\PyScripter.exe --python27 "'+argv[1]+'"')
elif shebang.split()[1] in {'python3','python3.3'}:
system(r'C:\Python33\PyScripter.exe --python33 "'+argv[1]+'"')
else:
system(r'C:\Python27\PyScripter.exe --python27')
file.close()
exit()
次に、py2exe を使用してプログラムをコンパイルし、.py ファイルの標準操作として選択しました。.py ファイルを開くと、PyScripter は正しいバージョンの python を使用してファイルを開きますが、ファイルを保存しようとすると、次のように表示されます。
Error saving file: "C:\Users\...\Python\example.py".
Error: Cannot create file "C:\Users\...\Python\example.py". The process cannot acces the file because it is being used by another process
PyScripter を開くためのコンパイル済みプログラムはまだ実行中ですが、それを強制終了しても、そのメッセージが表示されます。プログラムによって開かれた cmd.exe ウィンドウでも同じことが起こります。Windows エクスプローラーでファイルを削除/名前変更/移動しようとすると、ファイルが現在 PyScripter.exe によって使用されているため、実行できないと表示されます。これを解決する方法を知っている人はいますか?
Python 3 用の py2exe がないため、PyScripter を開くプログラムは Python 2.7 です。