嵌入式python环境_嵌入式python的pip

I installed embedded python from here, titled "Windows x86-64 embeddable zip file", but it does not have pip installed, it does not have site-packages either, when I try to do python get-pip.py it failed to run because this file has import pip in it. So how can I install pip within a embedded python environment.

Traceback (most recent call last):

File ".\getpip.py", line 20061, in

main()

File ".\getpip.py", line 194, in main

bootstrap(tmpdir=tmpdir)

File ".\getpip.py", line 82, in bootstrap

import pip

File "", line 961, in _find_and_load

File "", line 950, in _find_and_load_unlocked

File "", line 646, in _load_unlocked

File "", line 616, in _load_backward_compatible

The directory structure is:

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

解决方案

I recently ran into the same issue. I checked the documentation for pip and they seem to say that this use case isn't supported etc. But anyhow, here is my hack for getting the modules to work.

I installed, and by that I mean unzipped embedded python into a directory called d:\python. I assumed that the modules are going to live in that same directory.

First, to install the pip module, I needed to save the extraceted files. I changed the get-pip.py using a text editor that supported unix line terminators by removing the rmtree lines that remove the temporary and unpacked tree from the blob containted in the get-pip.py file.

I changed both locations, but only the last one was needed. The line that I changed in two locations read

shutil.rmtree(tmpdir, ignore_errors=True)

and I modified it thus (I didn't want to bother with the python indentation blocks):

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

I now ran my python D:\python\python.exe on the modified get-pip.py and found the temporary directory where the files were unzipped to.

I copied this directory, (check that it contains a main.py) file into the python install D:\python\pip (this is where I wanted my modules to live), ensuring that the D:\python\pip directory contained the main.py file.

The pip module is now installed in the python directory, but you need to hack pip further to remove the exception above. I did this by changing the locations.py file (in my case located in D:\python\pip\locations.py) to return the bin_py and bin_user locations of D:\python.

ie:

86 if WINDOWS:

....

bin_py = 'd:/python'

bin_user = 'd:/python'

I had to change the user_dir for pip to somewhere that would persist on this drive that was shared across multiple VMs.

The pip module now runs fine, eg

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值