Python Networking无法编译

时间:2017-02-01 10:07:36

标签: transcrypt

我无法使用python套接字模块 它说:

C:\Users\Owner\Desktop\Coding Projects\chatserver>Transcrypt import_test.py -b
Transcrypt (TM) Python to JavaScript Small Sane Subset Transpiler Version 3.6.4
Copyright (C) Geatec Engineering. License: Apache 2.0

Error in program import_test.py, module _socket, line 49:
        Attempt to load module: _socket
        Can't find any of:
                C:/Users/Owner/Desktop/Coding Projects/chatserver/__javascript__/_socket.mod.js
                C:/Users/Owner/Desktop/Coding Projects/chatserver/__javascript__/_socket.mod.js
                c:/program files (x86)/python36-32/lib/site-packages/transcrypt/modules/__javascript__/_socket.mod.js
                c:/program files (x86)/python36-32/lib/site-packages/transcrypt/modules/__javascript__/_socket.mod.js
                C:/Program Files (x86)/Python36-32/Scripts/__javascript__/_socket.mod.js
                C:/Program Files (x86)/Python36-32/Scripts/__javascript__/_socket.mod.js
                c:/program files (x86)/python36-32/python36.zip/__javascript__/_socket.mod.js
                c:/program files (x86)/python36-32/python36.zip/__javascript__/_socket.mod.js
                c:/program files (x86)/python36-32/DLLs/__javascript__/_socket.mod.js
                c:/program files (x86)/python36-32/DLLs/__javascript__/_socket.mod.js
                c:/program files (x86)/python36-32/lib/__javascript__/_socket.mod.js
                c:/program files (x86)/python36-32/lib/__javascript__/_socket.mod.js
                c:/program files (x86)/python36-32/__javascript__/_socket.mod.js
                c:/program files (x86)/python36-32/__javascript__/_socket.mod.js
                c:/program files (x86)/python36-32/lib/site-packages/__javascript__/_socket.mod.js
                c:/program files (x86)/python36-32/lib/site-packages/__javascript__/_socket.mod.js

Aborted

Python文件:

class Test:
    def __init__(self):
        print("HI")
        try:
            import socket
            s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
        except Exception as ex:
            print("Error: " + str(ex))

1 个答案:

答案 0 :(得分:0)

考虑导入sockets等模块,请注意以下几点:

  • Transcrypt是一个编译器而不是解释器。这意味着导入是在编译时完成的,以便能够编译导入的模块并将它们包含在生成的代码中。由于它们是编译时,它们不能是运行时条件,生成运行时异常等。

  • 如果你需要编译时间,请使用__pragma__('ifdef',......这适用于编译时。 您需要websockets而不是CPython套接字模块,它可能是用C编写的,因此无法在浏览器中运行。由于您可以使用任何JS库或API函数,因此您可以使用例如HTML5 Web套接字或任何JS套接字库。只需使用它与JavaScript完全相同。

  • 一般来说,对于Transcrypt,请使用JS库,因为它们最适合在浏览器中完成工作。 另见:http://www.transcrypt.org/docs/html/what_why.html#the-ecosystem-different-batteries

[编辑]

进一步澄清:

您应该仅在服务器端使用Python websockets包,因此不应使用Trancrypt。

我的意思是,在客户端上,您应该使用JavaScript websockets功能,如a.o所述。在以下地点:

https://developer.mozilla.org/en-US/docs/Web/API/WebSocket

https://www.tutorialspoint.com/html5/html5_websocket.htm

http://www.developerfusion.com/article/143158/an-introduction-to-websockets/

由于这些是JavaScript工具,因此它们不需要sys或类似的东西。 因此,请注意不要在Transcrypt客户端代码中导入websockets,因为这将为您提供Python包,而不是本机可用的JavaScript工具。