带有嵌入式 python 的 pip

新手上路,请多包涵

我从 这里 安装了嵌入式 python,标题为“Windows x86-64 可嵌入 zip 文件”,但它没有安装 pip,它也没有站点包,当我尝试做 python get-pip.py 它失败了运行,因为此文件中有 import pip 。那么如何在嵌入式 python 环境中安装 pip。

追溯(最近调用最后一次):文件“.\getpip.py”,第 20061 行,在 main() 文件“.\getpip.py”,第 194 行,在主引导程序中(tmpdir=tmpdir)文件“.\getpip. py”,第 82 行,在 bootstrap 导入 pip 文件“”,第 961 行,在_find_and_load 文件“”,第 950 行,在 _find_and_load_unlocked 文件“”,第 646 行,在 _load_unlocked 文件“”,第 616 行,在 _load_backward_compatible

目录结构为:

 Directory: C:\Downloads\python-3.6.1rc1-embed-win32

Mode                LastWriteTime         Length Name
----                -------------         ------ ----
-a----         3/4/2017   7:26 PM         157344 pyexpat.pyd
-a----         3/4/2017   7:26 PM          97952 python.exe
-a----         3/4/2017   7:26 PM          58016 python3.dll
-a----         3/4/2017   7:26 PM        3263648 python36.dll
-a----         3/4/2017   7:26 PM        2209284 python36.zip
-a----         3/4/2017   7:26 PM             79 python36._pth
-a----         3/4/2017   7:26 PM          96416 pythonw.exe
-a----         3/4/2017   7:26 PM          23200 select.pyd
-a----         3/4/2017   7:26 PM         866464 sqlite3.dll
-a----         3/4/2017   7:26 PM         895648 unicodedata.pyd
-a----         3/4/2017   7:26 PM          83784 vcruntime140.dll
-a----         3/4/2017   7:26 PM          24224 winsound.pyd
-a----         3/4/2017   7:26 PM          45216 _asyncio.pyd
-a----         3/4/2017   7:26 PM          77984 _bz2.pyd
-a----         3/4/2017   7:26 PM         101536 _ctypes.pyd
-a----         3/4/2017   7:26 PM         215712 _decimal.pyd
-a----         3/4/2017   7:26 PM         156832 _elementtree.pyd
-a----         3/4/2017   7:26 PM        1042592 _hashlib.pyd
-a----         3/4/2017   7:26 PM         183456 _lzma.pyd
-a----         3/4/2017   7:26 PM          32416 _msi.pyd
-a----         3/4/2017   7:26 PM          25760 _multiprocessing.pyd
-a----         3/4/2017   7:26 PM          33952 _overlapped.pyd
-a----         3/4/2017   7:26 PM          61600 _socket.pyd
-a----         3/4/2017   7:26 PM          64160 _sqlite3.pyd
-a----         3/4/2017   7:26 PM        1458848 _ssl.pyd

原文由 fluter 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 825
2 个回答

我最近遇到了同样的问题。我检查了 pip 的文档,他们似乎说这个用例不受支持等。但无论如何,这是我让模块工作的技巧。

我安装了,我的意思是将嵌入式 python 解压到一个名为 d:\python 的目录中。我假设模块将位于同一个目录中。

首先,要安装 pip 模块,我需要保存提取的文件。我使用支持 unix 行终止符的文本编辑器更改了 get-pip.py,方法是删除从 get-pip.py 文件中包含的 blob 中删除临时和解压缩树的 rmtree 行。

我更改了两个位置,但只需要最后一个。我在两个位置更改的行读取

shutil.rmtree(tmpdir, ignore_errors=True)

我因此修改了它(我不想打扰 python 缩进块):

 print('shutil.rmtree(tmpdir, ignore_errors=True)')

我现在在修改后的 get-pip.py 上运行我的 python D:\python\python.exe 并找到文件解压缩到的临时目录。

我将这个目录(检查它是否包含 .py)文件复制到 python 安装 D:\python\pip(这是我希望我的模块所在的位置),确保 D:\python\pip 目录包含 .py 文件。

pip 模块现在安装在 python 目录中,但您需要进一步破解 pip 以删除上述异常。我通过更改 locations.py 文件(在我的例子中位于 D:\python\pip\locations.py)来返回 D:\python 的 bin_py 和 bin_user 位置来做到这一点。

IE:

 86 if WINDOWS:
....
bin_py = 'd:/python'
bin_user = 'd:/python'

我必须将 pip 的 user_dir 更改为可以持久保存在多个虚拟机共享的驱动器上的某个位置。

pip 模块现在运行良好,例如

d:\python\python.exe -m pip …

原文由 user7287311 发布,翻译遵循 CC BY-SA 3.0 许可协议

即使明确声明 Python 的可嵌入版本不支持 Pip ,也可以谨慎使用。你需要:

  1. 下载并解压缩 Python 可嵌入 zip 文件。

  2. 在文件 python39._pth 或类似文件中,取消注释 import 命令。结果应与此类似:

    python39.zip
   .
   import site

  1. 下载 get-pip.py 到 Python 安装文件夹

  2. 运行 get-pip.py 。这会将 Pip 安装到 Scripts 目录:

    python get-pip.py

  1. 直接从命令行运行 Pip,因为 Pip 是一个可执行程序(本例是安装 Pandas):
    .\Scripts\pip install pandas

您可以在 Pip 问题 4207 中找到有关此的更多信息

原文由 oyon 发布,翻译遵循 CC BY-SA 4.0 许可协议

推荐问题
logo
Stack Overflow 翻译
子站问答
访问
宣传栏