Python Nuitka standalone isn';它不是真正独立的

Python Nuitka standalone isn';它不是真正独立的,python,nuitka,Python,Nuitka,我计划在项目中使用Python(3.6)脚本,尽管最终用户的系统上可能没有Python。为了解决这个问题并使一切尽可能顺利,我尝试使用Nuitka编译Python脚本并使其独立 为了做到这一点,我只是跑了 nuitka --standalone --recurse-all myscript.py 这样做需要一定的时间,但最终会生成一个包含myscript.exe的文件夹,我可以像运行脚本一样运行该文件夹 尽管如此,只要我尝试在另一台计算机上运行它,无论它是否安装了Python,我都会抛出一个错

我计划在项目中使用Python(3.6)脚本,尽管最终用户的系统上可能没有Python。为了解决这个问题并使一切尽可能顺利,我尝试使用Nuitka编译Python脚本并使其独立

为了做到这一点,我只是跑了

nuitka --standalone --recurse-all myscript.py
这样做需要一定的时间,但最终会生成一个包含
myscript.exe
的文件夹,我可以像运行脚本一样运行该文件夹

尽管如此,只要我尝试在另一台计算机上运行它,无论它是否安装了Python,我都会抛出一个错误:

Traceback (most recent call last):
  File "D:\Users\thoma\Desktop\recuperation.dist\recuperation.py", line 6, in <module>
  File "D:\Users\thoma\Desktop\recuperation.dist\requests\__init__.py", line 43, in requests
  File "D:\Users\thoma\Desktop\recuperation.dist\urllib3\__init__.py", line 8, in urllib3
  File "D:\Users\thoma\Desktop\recuperation.dist\urllib3\connectionpool.py", line 7, in connectionpool
  File "C:\Users\Thomas\AppData\Local\Programs\Python\Python36\lib\socket.py", line 49, in <module>
ModuleNotFoundError: No module named '_socket'
回溯(最近一次呼叫最后一次):
文件“D:\Users\thoma\Desktop\recoverage.dist\recoverage.py”,第6行,在
文件“D:\Users\thoma\Desktop\recoverage.dist\requests\\uuuu init\uuuu.py”,第43行,在请求中
文件“D:\Users\thoma\Desktop\recoverage.dist\urllib3\\uuuuu init\uuuuuu.py”,第8行,在urllib3中
文件“D:\Users\thoma\Desktop\recoverage.dist\urllib3\connectionpool.py”,第7行,在connectionpool中
文件“C:\Users\Thomas\AppData\Local\Programs\Python\Python36\lib\socket.py”,第49行,在
ModuleNotFoundError:没有名为“\u套接字”的模块
另外,一开始我很难让它工作,因为它缺少
cacert.pem
,但我通过复制
请求附带的
certifi
文件夹解决了这个问题。不知道这是否有关系


我的脚本使用了
请求
Dill
BS4
(还有
json
base64
os
sys

),因为Python模块中不需要Python3.3
\uu init.py
文件。Nuitka有时可以基于这些文件的存在而忽略构建中的模块。一种解决方法是,如果它们不存在,则手动添加它们。

独立--standalone
选项(尚未)生成单个二进制文件。为了在另一台机器上运行
myscript.exe
,您必须提供在nuitka的输出目录中找到的所有文件


幸运的是,允许编译单个文件二进制文件的工作正在进行中:

您是否使用pip安装了
\u socket
?不,我没有。但是,如果我只是使用python36 script.py运行脚本,那么脚本就可以正常工作了。具体来说,我无法帮助使用Nuitka,但这两个问题都存在(缺少证书之类的“外部文件”或缺少第三方包)当使用distutils或cx_Freeze时,不适当地指定setup.cfg可能会出现这种情况,因此您可能会研究Nuitka是否支持该规范以及如何编辑该规范。这意味着该库可能已安装在您的系统中,但Nuitka找不到它。尝试使用pip在本地安装它,然后将其编译成executable@jedwards我会调查的。