我无法使用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))
答案 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工具。