点缀嵌入式python

flu*_*ter 17 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导入点文件"",第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
Run Code Online (Sandbox Code Playgroud)

小智 25

即使明确声明python的嵌入版本不支持pip,他们也说小心翼翼.有一个简单的解决方法,在嵌入版本的python中使用pip.

PIP可以安装在嵌入式python中.你需要:

您可以在pip issue 4207中找到有关此内容的更多信息

  • 我刚刚发现删除/重命名“_pth”文件可以从嵌入式中释放这个安装。带有“_pth”文件的python将无法识别任何其他环境变量,尤其是PYTHONPATH。 (3认同)
  • pip安装正常,但随后将无法正常运行或根本无法运行。“ _pth”文件需要触摸:在“。”下面添加“。\ Lib \ site-packages \”。 (2认同)

ale*_*xey 11

我如何将 pip 安装到可嵌入的 python 发行版中:

  1. 解压 python 可嵌入发行版存档和 cd 那里
  2. 运行python ./get-pip.py(到这里
  3. 无论是刚刚取消注释字符串import site里的文件pythonXX._pth 从文件夹库/站点包/成pythonXX.zip新创建的文件夹复制(至少PIP)

现在可以 python -m pip ...


小智 9

我的解决方案是删除这个文件:

python39._pth
Run Code Online (Sandbox Code Playgroud)

这允许 Pip 工作,也允许import来自同一目录。或者你可以得到这个:

https://nuget.org/packages/python

点击“下载包”,您就可以像Zip文件一样解压。


小智 7

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

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

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

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

shutil.rmtree(tmpdir, ignore_errors=True)
Run Code Online (Sandbox Code Playgroud)

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

print('shutil.rmtree(tmpdir, ignore_errors=True)')
Run Code Online (Sandbox Code Playgroud)

我现在在修改后的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位置.

即:

86 if WINDOWS:
....
bin_py = 'd:/python'
bin_user = 'd:/python'
Run Code Online (Sandbox Code Playgroud)

我不得不将pip的user_dir更改为在多个VM之间共享的此驱动器上保留的某个位置.

pip模块现在运行正常,例如

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