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\
我的 PATH 有 O:\xip\Python;O:\xip\Python\build\lib
我的 PYTHONPATH 有 O:\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内嵌版本及请求包的主要内容,如果未能解决你的问题,请参考以下文章
SpringBoot与Tomcat的启动(内嵌Tomcat)