Python嵌入式版本和请求包

3

我有一台孤立的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. 我需要从安装了request软件包的机器中复制其他文件吗?
请问这里出了什么问题?

python setup.py install it on other machine - 为什么你没有在目标机器上执行此操作?你没有在这个命令中使用pip。(另外,如果你有pip的话,你可以安装本地的whl文件,而不需要访问互联网。) - undefined
@h4z3 因为我得到了“没有模块setuptools”的错误提示。 - undefined
好的。另一个建议是:检查原始系统上软件包的路径和Python路径。 - undefined
2个回答

2
嵌入式分发不使用环境变量。请参见此处: Python Issue 28245 您应该编辑python._pth文件并在其中放置您的附加路径。
或者,在尝试导入之前,您也可以扩展sys.path

添加了库的路径,但是现在使用import requests尝试时出现以下错误: ModuleNotFoundError: No module named 'urllib3' - undefined
我猜测requests依赖于urllib3。如果它在你的“构建”系统上运行正常,你应该能够从那里找到并复制urllib3 - undefined
在您的构建机器上,您可以使用pip install --install-option="--prefix=/some/path" requests --ignore-installed命令来让pip为您解决所有依赖关系。请参考这里的链接:https://dev59.com/jnE85IYBdhLWcg3wKwKD - undefined
python._pth 是我遇到的主要问题,还有所有依赖于模块的依赖项。现在我只需复制已安装的模块以及所有依赖的模块,一切都正常工作了!谢谢 - undefined

0
embed.zip Windows Python分发需要一些调整。它不能直接“开箱即用”地运行。我创建了一个PowerShell脚本,PythonEmbed4Win.ps1,用于安装从互联网下载的embed.zip Python分发,并对安装进行调整,以便无错误地运行。该脚本将修改python._pth等其他文件。
Invoke-WebRequest -Uri "https://raw.githubusercontent.com/jtmoon79/PythonEmbed4Win/main/PythonEmbed4Win.ps1" -OutFile "PythonEmbed4Win.ps1"

.\PythonEmbed4Win.ps1 -Version 3.8

我有一个孤立的 Wintel 主机,无法使用 pip 等功能。
在具有互联网访问权限的主机上运行 `.\PythonEmbed4Win.ps1`,然后将内容压缩并传输到您的孤立主机上进行解压。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接