import osに失敗する(SharpDevelopで実行すると)
SharpDevelopでIronPythonのコードを書くとき、なぜかosモジュールのインポートに失敗する。原因は不明。
下のサンプルコードは、ボタンを押してファイルを選択する。選択されたファイルのファイル名だけがボタン上に表示される。os.path.basename()を使って、ファイル名だけを取り出したいが、import osがエラーになるので動かない。しかし、SharpDevelopを介さないで実行すると問題なく動作する。なぜなのか不明。
「import os」と入力すると、「import Microsoft」と自動変換されるし。謎だ。
#Program: MainForm.py import os import System.Drawing import System.Windows.Forms from System.Drawing import * from System.Windows.Forms import * class MainForm(Form): def __init__(self): self.InitializeComponent() def InitializeComponent(self): self._button1 = System.Windows.Forms.Button() self.SuspendLayout() # # button1 # self._button1.Font = System.Drawing.Font("メイリオ", 9, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, 128) self._button1.Location = System.Drawing.Point(39, 52) self._button1.Name = "button1" self._button1.Size = System.Drawing.Size(202, 42) self._button1.TabIndex = 0 self._button1.Text = "Read file" self._button1.UseVisualStyleBackColor = True self._button1.Click += self.Button1Click # # MainForm # self.ClientSize = System.Drawing.Size(283, 151) self.Controls.Add(self._button1) self.Name = "MainForm" self.Text = "Test" self.ResumeLayout(False) def Button1Click(self, sender, e): #ファイル選択ダイアログを開く ofile = OpenFileDialog() ofile.Filter = "All files (*.*)|*.*" ofile.RestoreDirectory = True if ofile.ShowDialog() == DialogResult.OK: #ファイルパスからファイル名だけ取り出す。 self._button1.Text = os.path.basename(ofile.FileName) return
#Program: Program.py import clr clr.AddReference('System.Windows.Forms') clr.AddReference('System.Drawing') from System.Windows.Forms import Application import MainForm Application.EnableVisualStyles() form = MainForm.MainForm() Application.Run(form)
IronPythonがインストールされた環境であれば、Program.pyをダブルクリックするとGUIが起動する。
実行結果の例は以下の通り。
「Read file」ボタンを押すとファイル選択ダイアログが開かれる。
ファイルを選択するとファイル名(basename)だけ取り出されてボタンに表示される。