python内嵌版本及请求包

Posted

技术标签:

【中文标题】python内嵌版本及请求包【英文标题】:python embedded version and request package 【发布时间】:2020-06-09 03:44:12 【问题描述】:

我有一个孤立的 Wintel 主机无法 pip 等,这等于将网络打开到“互联网”。 我下载了python嵌入表单python.org(在其他机器上),将其复制并解压缩到隔离机器上的O:\xip\Python。 现在看起来像:

libcrypto-1_1.dll
libffi-7.dll
libssl-1_1.dll
LICENSE.txt
pyexpat.pyd
python.cat
python.exe
python3.dll
python38.dll
python38.zip
python38._pth
pythonw.exe
select.pyd
sqlite3.dll
unicodedata.pyd
vcruntime140.dll
winsound.pyd
_asyncio.pyd
_bz2.pyd
_ctypes.pyd
_decimal.pyd
_elementtree.pyd
_hashlib.pyd
_lzma.pyd
_msi.pyd
_multiprocessing.pyd
_overlapped.pyd
_queue.pyd
_socket.pyd
_sqlite3.pyd
_ssl.pyd

我有 PyPI requests 包,在其他机器上做了 python setup.py install,我将 \build\lib\ 目录(出现)复制到独立机器 O:\xip\Python\build\lib\requests\ 我的 PATHO:\xip\Python;O:\xip\Python\build\lib 我的 PYTHONPATHO:\xip\Python\python38.zip;O:\xip\Python\build\lib;O:\xip\Python\build\lib\requests 当我去 python 控制台并运行import requests 我得到no module named 'requests' 1.我应该解压这个python38.zip吗? 2. 我应该在 PATH 或 PYTHONPATH 中添加更多内容吗? 3. 我应该从我安装请求包的机器上复制更多内容吗? 有什么想法吗?

【问题讨论】:

python setup.py install it on other machine - 你为什么不在你的目标机器上这样做?您没有在此命令中使用 pip。 (另外,如果你有 pip,你可以安装本地***,你不必访问互联网。) @h4z3 因为我得到了no module setuptools 好的。所以另一个建议是:在包来自的原始系统上检查你的路径和 pythonpath 【参考方案1】:

嵌入式发行版不使用环境变量。见这里:Python Issue 28245

您应该编辑python._pth 文件并将您的附加路径放在那里。

或者,您也可以在尝试导入之前扩展 sys.path

【讨论】:

ok 添加到库的路径,但现在import requests 尝试我得到:ModuleNotFoundError: No module named 'urllib3' 我猜requests 依赖于urllib3。如果它适用于您的“构建”系统,您应该能够从那里找到并复制 urllib3 在您的 Build 机器上,您可以使用 pip install --install-option="--prefix=/some/path" requests --ignore-installed 让 pip 为您解析所有依赖项。见这里***.com/questions/2915471/… python._pth 是我的问题的核心,以及模块需要的所有依赖项。现在我只需复制所有依赖模块的已安装模块,一切正常!谢谢

以上是关于python内嵌版本及请求包的主要内容,如果未能解决你的问题,请参考以下文章

Jcef内嵌浏览器windows版本的编译及使用

SpringBoot与Tomcat的启动(内嵌Tomcat)

C#内嵌Python架构实现

UnityWebGl与Vue通讯问题(及如何内嵌Webgl至Vue)

课时20:内嵌函数和闭包

嵌入式:ARM内嵌汇编及C和ARM汇编相互调用