3

Windowsコンピュータをリモートで管理するための小さなスクリプトを作成しようとしています(現在はシャットダウンのみ)。私が使用している方法には、webapp2サーバーが含まれます。最初の試みを.exeにコンパイルしたいと思います。私が抱えている問題は、コンパイルに成功した後、実行しようとするとエラーが返されることです。

Traceback (most recent call last):
 File "web2.py", line 2, in <module>
 File "webapp2.pyc", line 25, in <module>
 File "webob\__init__.pyc", line 1, in <module>
 File "webob\datetime_utils.pyc", line 10, in <module>
ImportError: No module named email.utils

同様の結果が得られたcx_Freezeでこれも試しました。py2exeを使用してバンドルしている間、インポートエラーで与えられたアドバイスに従いました。

それが何らかの用途である場合、ここに私のコードがあります:

import cgi
import webapp2
import os
import socket


def ip():
    s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
    s.connect(('google.com', 0))
    return s.getsockname()[0]

class MainPage(webapp2.RequestHandler):
    def get(self):
        self.response.out.write("""
          <html>
            <body>
              <form action="/shutdown" method="link">
                <div><input type="submit" value="Shutdown"></div>
              </form>
            </body>
          </html>""")


class shutdown(webapp2.RequestHandler):
    def get(self):
        self.response.out.write('<html><body>Shutting down...<pre>')
        self.response.out.write('</pre></body></html>')
        os.system("shutdown -p -f")

app = webapp2.WSGIApplication([('/', MainPage),
                              ('/shutdown', shutdown)],
                              debug=True)
def main():
    from paste import httpserver
    httpserver.serve(app, host=ip(), port='80')

if __name__ == '__main__':
    main()

前もって感謝します。

編集:

modulefinderを使用して、インポートされていないモジュールがたくさんあることを知りました。ただし、これが正常に実行された場合に発生するのか、インポートされた場合にのみ発生するのか、またはそのようなものなのかはわかりません。

http://pastebin.com/s0U9WHJ6

4

2 に答える 2

0

問題は、py2exeがインタープリターと同じようにwebobをインポートすると想定していたことにあることがわかりました。実際、ビルド中のフォルダーに webob フォルダーを配置する必要がありました。

于 2012-07-04T22:24:10.870 に答える